In addition to matching external references to global definitions
in object files, ld
matches external references to global definitions in libraries.
A library is a file containing object code
for subroutines and data that can be used by other programs. For
example, the standard C library, libc,
contains object code for functions that can be used by C, C++, FORTRAN,
and Pascal programs to do input, output, and other standard operations.
Library Naming Conventions |
 |
By convention, library names have the form:
libname.suffix
- name
is a string of one or more characters that identifies
the library.
- suffix
is .a
if the library is an archive library or .sl
if the library is a shared library. suffix
is a number, for example .0,
.1, and so forth,
if library-level versioning is being used.
Typically, library names are referred to without the suffix.
For instance, the standard C library is referred to as libc.
Default Libraries |
 |
A compiler driver automatically specifies certain default
libraries when it invokes ld.
For example, cc
automatically links in the standard library libc,
as shown by the -lc
option to ld
in this example:
$ cc -Aa -v main.c func.c ... /usr/ccs/bin/ld /opt/langtools/lib/crt0.o -u main main.o \ func.o -lc cc: Entering Link editor. |
Similarly, the Series 700/800 FORTRAN compiler automatically
links with the libcl
(C interface), libisamstub
(ISAM file I/O), and libc
libraries:
$ f77 -v sumnum.f ... /usr/ccs/bin/ld -x /opt/langtools/lib/crt0.o \ sumnum.o -lcl -lisamstub -lc
|
The Default Library
Search Path |
 |
By default, ld
searches for libraries in the directory /usr/lib.
(If the -p or
-G compiler profiling
option is specified on the command line, the compiler directs the
linker to also search /usr/lib/libp.)
The default order can be overridden with the LPATH
environment variable or the -L
linker option. LPATH
and -L are described
in “Changing the
Default Library Search Path with -L and LPATH ”.