ld.so
loads the shared libraries needed by a program, prepares the program
to run, and then runs it.
Unless explicitly specified via the
-static
option to
ld
during compilation, all Linux programs are incomplete and require
further linking at run time.
The necessary shared libraries needed by the program are searched for
in the following order
o
Using the DT_RPATH dynamic section attribute of the binary if present and
DT_RUNPATH attribute does not exist.
o
Using the environment variable
LD_LIBRARY_PATH .
Except if the executable is a setuid/setgid binary, in which case it
is ignored.
o
Using the DT_RUNPATH dynamic section attribute of the binary if present.
o
From the cache file
/etc/ld.so.cache
which contains a compiled list of candidate libraries previously found
in the augmented library path. If, however, the binary was linked with
-z nodeflib
linker option, libraries in the default library paths are skipped.
o
In the default path
/lib,
and then
/usr/lib.
If the binary was linked with
-z nodeflib
linker option, this step is skipped.
SYNOPSIS
The dynamic linker can be run either indirectly through running some
dynamically linked program or library (in which case no command line options
to the dynamic linker can be passed and the dynamic linker which is stored
in the
.interp
section of the program is executed) or directly by running:
/lib/ld-linux.so.*
[OPTIONS] [PROGRAM [ARGUMENTS]]
COMMAND LINE OPTIONS
--list
List all dependencies and how they are resolved.
--verify
Verify that program is dynamically linked and this dynamic linker can handle
it.
--library-path PATH
Override
LD_LIBRARY_PATH
environment variable setting (see below).
--ignore-rpath LIST
Ignore RPATH and RUNPATH information in object names in LIST.