HP Fortran Programmer's Guide (March 2010)

Compiling and linking
Linking HP Fortran programs
Chapter 286
/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 169. (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 or .sl on Itanium ). 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.
The disadvantage of linking with a shared library is that it creates a dependency between the
library and the program; both the shared library and the program must always be installed
together on the same system. By contrast, linking with an archive library makes the
executable program independent of the library to which it was linked. Also, programs that
make frequent calls to library routines may run more slowly when linked to shared libraries.
By default, the linker selects the shared version of a library, if one is available; otherwise, it
selects the archive version.
NOTE For libF90, libU77, and libIO77 (Itanium only), archive libraries are
selected by default (see +sharedlibF90, +sharedlibU77, and
+sharedlibIO77 options).