ld.so(8) - phpMan

Command: man perldoc info search(apropos)  


LD.SO(8)                   Linux Programmer's Manual                  LD.SO(8)



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

SYNOPSIS
       The  dynamic linker can be run either indirectly by 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]]

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(1) during compilation.

       The program ld.so handles a.out binaries, a format used long ago; ld-linux.so* han-
       dles  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 behavior, 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 the following order:

       o  (ELF only) Using the directories  specified  in  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
          set-user-ID/set-group-ID binary, in which case it is ignored.

       o  (ELF  only)  Using  the  directories specified in 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 the -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 the
          -z nodeflib linker option, this step is skipped.

   $ORIGIN and rpath
       ld.so understands the string $ORIGIN (or equivalently ${ORIGIN}) in an rpath speci-
       fication  (DT_RPATH or DT_RUNPATH) to mean the directory containing the application
       executable.  Thus, an application located in somedir/app could be compiled with gcc
       -Wl,-rpath,'$ORIGIN/../lib'  so  that  it  finds  an  associated  shared library in
       somedir/lib no matter where somedir is located in the  directory  hierarchy.   This
       facilitates  the  creation  of  "turn-key"  applications  that  do  not  need to be
       installed into special directories, but can instead be unpacked into any  directory
       and still find their own shared libraries.

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).

       --inhibit-rpath LIST
              Ignore RPATH and RUNPATH information in object names in LIST.   This  option
              is ignored if ld.so is set-user-ID or set-group-ID.

ENVIRONMENT
       There are four important environment variables.

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

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

       LD_PRELOAD
              A  list  of  additional,  user-specified,  ELF shared libraries to be loaded
              before all others.  The items of the list can  be  separated  by  spaces  or
              colons.   This can be used to selectively override functions in other shared
              libraries.  The libraries are searched  for  using  the  rules  given  under
              DESCRIPTION.   For  set-user-ID/set-group-ID ELF binaries, preload pathnames
              containing slashes are ignored, and libraries in the standard search  direc-
              tories  are  loaded only if the set-user-ID permission bit is enabled on the
              library file.

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

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

       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_AUDIT
              (glibc  since  2.4)  A  colon-separated  list  of user-specified, ELF shared
              objects to be loaded before all others in a separate linker namespace (i.e.,
              one  that  does not intrude upon the normal symbol bindings that would occur
              in the process).  These libraries can be used to audit the operation of  the
              dynamic  linker.  LD_AUDIT is ignored for set-user-ID/set-group-ID binaries.

              The dynamic linker will notify the audit  libraries  at  so-called  auditing
              checkpoints--for example, loading a new library, resolving a symbol, or call-
              ing a symbol from another shared object--by calling an  appropriate  function
              within  the  audit  library.   For details, see rtld-audit(7).  The auditing
              interface is largely compatible with that provided on Solaris, as  described
              in  its  Linker  and Libraries Guide, in the chapter Runtime Linker Auditing
              Interface.

       LD_BIND_NOT
              (glibc since 2.1.95) Do not update the GOT (global  offset  table)  and  PLT
              (procedure linkage table) after resolving a symbol.

       LD_DEBUG
              (glibc  since  2.1)  Output  verbose debugging information about the dynamic
              linker.  If set to all prints all debugging information it has,  if  set  to
              help  prints  a help message about which categories can be specified in this
              environment variable.  Since glibc 2.3.4, LD_DEBUG is ignored for  set-user-
              ID/set-group-ID binaries.

       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  set-user-ID/set-group-ID
              binaries.

       LD_DYNAMIC_WEAK
              (glibc  since  2.1.91) Allow weak symbols to be overridden (reverting to old
              glibc behavior).  For security reasons, since glibc  2.3.4,  LD_DYNAMIC_WEAK
              is ignored for set-user-ID/set-group-ID binaries.

       LD_HWCAP_MASK
              (glibc since 2.1) Mask for hardware capabilities.

       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.

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

       LD_ORIGIN_PATH
              (glibc  since  2.1) Path where the binary is found (for non-set-user-ID pro-
              grams).  For security reasons, since glibc 2.4,  LD_ORIGIN_PATH  is  ignored
              for set-user-ID/set-group-ID binaries.

       LD_POINTER_GUARD
              (glibc  since  2.4)  Set  to 0 to disable pointer guarding.  Any other value
              enables pointer guarding, which is also the default.  Pointer guarding is  a
              security  mechanism whereby some pointers to code stored in writable program
              memory (return addresses saved by setjmp(3) or  function  pointers  used  by
              various glibc internals) are mangled semi-randomly to make it more difficult
              for an attacker to hijack the pointers for use in  the  event  of  a  buffer
              overrun or stack-smashing attack.

       LD_PROFILE
              (glibc  since 2.1) Shared object to be profiled, specified either as a path-
              name or a soname.  Profiling output is written to the file  whose  name  is:
              "$LD_PROFILE_OUTPUT/$LD_PROFILE.profile".

       LD_PROFILE_OUTPUT
              (glibc  since  2.1) Directory where LD_PROFILE output should be written.  If
              this variable is not defined, or is defined as an  empty  string,  then  the
              default  is /var/tmp.  LD_PROFILE_OUTPUT is ignored for set-user-ID and set-
              group-ID programs, which always use /var/profile.

       LD_SHOW_AUXV
              (glibc since 2.1) Show auxiliary array passed up from the kernel.  For secu-
              rity  reasons,  since  glibc  2.3.5,  LD_SHOW_AUXV  is ignored for set-user-
              ID/set-group-ID binaries.

       LD_USE_LOAD_BIAS
              By default (i.e., if this variable is not defined) executables and prelinked
              shared  objects  will  honor base addresses of their dependent libraries and
              (non-prelinked) position-independent executables  (PIEs)  and  other  shared
              objects  will not honor them.  If LD_USE_LOAD_BIAS is defined wit the value,
              both  executables  and   PIEs   will   honor   the   base   addresses.    If
              LD_USE_LOAD_BIAS  is  defined with the value 0, neither executables nor PIEs
              will honor the base addresses.  This variable is ignored by set-user-ID  and
              set-group-ID programs.

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

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

       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.
       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), rtld-audit(7), ldconfig(8)

COLOPHON
       This page is part of release 3.22 of the Linux man-pages project.  A description of
       the  project, and information about reporting bugs, can be found at http://www.ker-
       nel.org/doc/man-pages/.



GNU                               2009-01-12                          LD.SO(8)

Generated by $Id: phpMan.php,v 4.55 2007/09/05 04:42:51 chedong Exp $ Author: Che Dong
On Apache
Under GNU General Public License
2017-12-12 04:41 @127.0.0.1 CrawledBy CCBot/2.0 (http://commoncrawl.org/faq/)
Valid XHTML 1.0!Valid CSS!