On Big Red or Quarry, how do I link to a library?
On Unix systems (including Big Red
and Quarry at Indiana University), if the
library file resides in one of the standard directories (i.e.,
/usr/lib/lib or /usr/local/lib), you can
link to the library by using the -l flag
(lowercase L). For example, linking with the -lx flag
actually means the library file is libx.a or
libx.so in one of the standard directories.
If the library is not in a standard directory, use the
-L flag (uppercase L) to explicitly specify
the library file search path. For example, if the LAPACK library
resides in the /libapps/lapack directory, use the
following to link with it:
The linker ld usually searches in the
directories specified by the -L flag first,
and then in the standard directories. The first match will satisfy the
search. If files with both .a and .so
extensions are found in a directory, the .so file is
used.
For more, see the ld man page. Also, see When compiling a C program in Unix, why do I get "ld: Unresolved:"?
Note: In some special cases, you cannot link to a
library using -l flags; for example, on
Solaris systems, the Sun Performance Library uses
-xlic_lib .
For more information, refer to Frequently Asked Questions maintained by IU's High Performance Applications staff.
This document was developed with support from the National Science Foundation (NSF) under Grant No. 0503697 to the University of Chicago and subcontracted to Indiana University. Additional support was provided by IU through its participation in the TeraGrid, which is supported by the NSF under Grants No. 0833618, SCI451237, SCI535258, and SCI504075. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the NSF.
Last modified on July 15, 2009.







