HP Fortran Programmer's Guide (September 2007)

Compiling and linking
Linking HP Fortran programs
Chapter 280
64-bit PA-RISC 2.0 code
-L/opt/fortran90/lib/pa20_64/ -lF90 -lisamstub
Additional HP Fortran libraries
HP Fortran provides the following two libraries you can link with Fortran programs:
/opt/fortran90/lib/libU77.a: The BSD 3f (libU77) library, which provides a Fortran
interface to some of the libc system routines. Programs that reference routines in this
library must be compiled with the +U77 option. For information about porting Fortran
programs that reference libU77 routines, see “Migrating to HP Fortran” on page 213.
/opt/fortran90/lib/libblas.a: The Basic Linear Algebra Subroutine (BLAS)
library, which provides routines that perform common vector and matrix operations.
Programs that reference routines in this library must be compiled with the +lblas option.
For more information, see “Calling BLAS library routines” on page 161. (PA-RISC only)
Both the libU77 and BLAS libraries are described in the HP Fortran Programmer’s Reference.
Linking to shared libraries
Many HP Fortran libraries as well as HP-UX libraries exist in both shared and archive
versions, as indicated by the library extension name (.sl or .a). For example, there are both
shared and archive versions of the HP Fortran runtime library, /usr/lib/libcl.sl and
/usr/lib/libcl.a.
The difference between a shared library and an archive library is that the linker does not
actually link the code in a shared library with your program. Instead, any references that
your program makes to entities in the shared library are resolved at load-time, when the
library is loaded into the executable program’s address space. By contrast, code in the archive
library is copied to the executable program file.
The advantages of linking shared libraries are:
The executable is smaller than it would be if linked with an archive file because the
executable file is incomplete—it doesn’t include code from the library.
Using shared libraries ensures that you always get the most recent version of the library.
If you link with an archive version, you get the version that was available at link-time. If,
later on, you want a more recent version of the library, you must re-link your program
with that library.