ld.so

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
LD.SO(8)		  Linux Programmer’s Manual		     LD.SO(8)



NAME
       ld.so, ld-linux.so* - dynamic linker/loader

DESCRIPTION
       The programs ld.so and ld-linux.so* find and load the shared libraries
       needed by a program, prepare the program to run, and then run it.

       Linux binaries require dynamic linking (linking at  run	time)  unless
       the -static option was given to ld during compilation.

       The  program ld.so handles a.out binaries, a format used long ago; ld-
       linux.so*  handles  ELF	(/lib/ld-linux.so.1   for   libc5,   /lib/ld-
       linux.so.2  for glibc2), which everybody has been using for years now.
       Otherwise both have the same behaviour, and use the same support files
       and programs ldd(1), ldconfig(8) and /etc/ld.so.conf.

       The shared libraries needed by the program are searched for in various
       places:

       o      (ELF only) Using the DT_RPATH dynamic section attribute of  the
	      binary if present and DT_RUNPATH attribute does not exist.  Use
	      of DT_RPATH is deprecated.

       o      Using the environment variable LD_LIBRARY_PATH.  Except if  the
	      executable  is  a	 setuid/setgid	binary,	 in  which case it is
	      ignored.

       o      (ELF only) 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 node-
	      flib 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, in the ELF case,  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.
	      This  option  has	 been supported by glibc2 for about one hour.
	      Then it was renamed into:

       --inhibit-rpath LIST

ENVIRONMENT
       There are four important environment variables.

       LD_LIBRARY_PATH
	      A colon-separated list of directories in which  to  search  for
	      ELF  libraries at execution-time.	 Similar to the PATH environ-
	      ment variable.

       LD_PRELOAD
	      A whitespace-separated list of additional, user-specified,  ELF
	      shared  libraries	 to be loaded before all others.  This can be
	      used  to	selectively  override  functions  in   other   shared
	      libraries.   For	setuid/setgid ELF binaries, only libraries in
	      the standard search directories that are also  setuid  will  be
	      loaded.

       LD_BIND_NOW
	      (libc5;  glibc  since 2.1.1) If set to non-empty string, causes
	      the dynamic linker to resolve all symbols	 at  program  startup
	      instead  of  deferring function call resolval to the point when
	      they are first referenced.  This is useful when using a  debug-
	      ger.

       LD_TRACE_LOADED_OBJECTS
	      (ELF  only)  If  set to non-empty string, causes the program to
	      list its dynamic library dependencies, as	 if  run  by  ldd(1),
	      instead of running normally.

       Then  there  are lots of more or less obscure variables, many obsolete
       or only for internal use.

       LD_WARN
	      (ELF only)(glibc since 2.1.3) If set to non-empty string,	 warn
	      about unresolved symbols.

       LD_NOWARN
	      (a.out  only)(libc5)  Suppress  warnings	about a.out libraries
	      with incompatible minor version numbers.

       LD_BIND_NOT
	      (glibc since 2.1.95) Do not update the GOT (global  offset  ta-
	      ble)  and	 PLT (procedure linkage table) after resolving a sym-
	      bol.

       LD_DEBUG
	      (glibc since 2.1) Output verbose	debugging  information	about
	      the  dynamic linker.  If set to all prints all debugging infor-
	      mation it has, if set to help prints a help message about which
	      categories can be specified in this environment variable.

       LD_DEBUG_OUTPUT
	      (glibc  since  2.1)  File	 where	LD_DEBUG output should be fed
	      into, default is standard output.	 LD_DEBUG_OUTPUT  is  ignored
	      for setuid/setgid binaries.

       LD_VERBOSE
	      (glibc  since  2.1)  If  set to non-empty string, output symbol
	      versioning information about the program if  querying  informa-
	      tion  about the program (ie. either LD_TRACE_LOADED_OBJECTS has
	      been set, or --list or --verify options have been given to  the
	      dynamic linker).

       LD_PROFILE
	      (glibc since 2.1) Shared object to be profiled.

       LD_PROFILE_OUTPUT
	      (glibc  since  2.1)  File	 where	LD_PROFILE  output  should be
	      stored, default is standard output.  LD_DEBUG_OUTPUT is ignored
	      for setuid/setgid binaries.

       LD_AOUT_LIBRARY_PATH
	      (libc5)  Version	of  LD_LIBRARY_PATH  for a.out binaries only.
	      Old    versions	  of	 ld-linux.so.1	   also	    supported
	      LD_ELF_LIBRARY_PATH.

       LD_AOUT_PRELOAD
	      (libc5)  Version	of  LD_PRELOAD	for a.out binaries only.  Old
	      versions of ld-linux.so.1 also supported LD_ELF_PRELOAD.

       LD_SHOW_AUXV
	      (glibc since 2.1) Show auxiliary array passed up from the	 ker-
	      nel.

       LD_HWCAP_MASK
	      (glibc since 2.1) Mask for hardware capabilities.

       LD_ORIGIN_PATH
	      (glibc  since  2.1)  Path	 where	the binary is found (for non-
	      setuid programs).

       LD_DYNAMIC_WEAK
	      (glibc since  2.1.91)  Allow  weak  symbols  to  be  overridden
	      (reverting to old glibc behaviour).

       LD_KEEPDIR
	      (a.out  only)(libc5) Don’t ignore the directory in the names of
	      a.out libraries to be loaded.  Use of this option	 is  strongly
	      discouraged.

       LDD_ARGV0
	      (libc5) argv[0] to be used by ldd(1) when none is present.

FILES
       /lib/ld.so
	      a.out dynamic linker/loader
       /lib/ld-linux.so.{1,2}
	      ELF dynamic linker/loader
       /etc/ld.so.cache
	      File  containing	a  compiled  list  of directories in which to
	      search  for  libraries  and  an  ordered	list   of   candidate
	      libraries.
       /etc/ld.so.preload
	      File  containing	a  whitespace  separated  list	of ELF shared
	      libraries to be loaded before the program.   libraries  and  an
	      ordered list of candidate libraries.
       lib*.so*
	      shared libraries

NOTES
       The  ld.so  functionality  is available for executables compiled using
       libc version 4.4.3 or greater.  ELF functionality is  available	since
       Linux 1.1.52 and libc5.

SEE ALSO
       ldd(1), ldconfig(8)



				  2001-12-16			     LD.SO(8)