home | help
RTLD(1) 		     General Commands Manual			 RTLD(1)

NAME
     ld-elf.so.1, ld.so, rtld -- run-time link-editor

DESCRIPTION
     The  ld-elf.so.1  utility	is a self-contained shared object providing run-
     time support for loading and link-editing shared objects  into  a	process'
     address  space.   It is also commonly known as the dynamic linker.  It uses
     the data structures contained within dynamically linked programs to  deter-
     mine  which  shared  libraries  are needed and loads them using the mmap(2)
     system call.

     After all shared libraries have been successfully loaded, ld-elf.so.1  pro-
     ceeds to resolve external references from both the main program and all ob-
     jects  loaded.   A  mechanism is provided for initialization routines to be
     called on a per-object basis, giving a shared object an opportunity to per-
     form any extra set-up before execution of the program proper begins.   This
     is useful for C++ libraries that contain static constructors.

     The  ld-elf.so.1  utility	itself is loaded by the kernel together with any
     dynamically-linked program that is to be executed.   The  kernel  transfers
     control to the dynamic linker.  After the dynamic linker has finished load-
     ing,  relocating,	and initializing the program and its required shared ob-
     jects, it transfers control to the entry point of the program.

     To locate the required shared objects in the file system,	ld-elf.so.1  may
     use a "hints" file prepared by the ldconfig(8) utility.

     The  ld-elf.so.1  utility recognizes a number of environment variables that
     can be used to modify its behaviour as follows:

     LD_DUMP_REL_POST	If set ld-elf.so.1 will print a table containing all re-
			locations after symbol binding and relocation.

     LD_DUMP_REL_PRE	If set ld-elf.so.1 will print a table containing all re-
			locations before symbol binding and relocation.

     LD_LIBMAP		A  library  replacement  list  in  the	same  format  as
			libmap.conf(5).  For convenience, the characters `=' and
			`,'  can be used instead of a space and a newline.  This
			variable is parsed after libmap.conf(5), and will  over-
			ride its entries.

     LD_LIBMAP_DISABLE	If   set,   disables   the  use  of  libmap.conf(5)  and
			LD_LIBMAP.

     LD_LIBRARY_PATH	A colon separated list of  directories,  overriding  the
			default  search  path for shared libraries.  This is ig-
			nored for set-user-ID and set-group-ID programs.

     LD_PRELOAD 	A list of shared libraries, separated by  colons  and/or
			white space, to be linked in before any other shared li-
			braries.  If the directory is not specified then the di-
			rectories  specified by LD_LIBRARY_PATH will be searched
			first followed by the set of built-in standard	directo-
			ries.	This is ignored for set-user-ID and set-group-ID
			programs.

     LD_BIND_NOW	When set to a nonempty string, causes ld-elf.so.1 to re-
			locate all external function calls before starting  exe-
			cution	of  the  program.   Normally, function calls are
			bound lazily,  at  the	first  call  of  each  function.
			LD_BIND_NOW  increases	the  start-up time of a program,
			but it avoids run-time surprises caused by  unexpectedly
			undefined functions.

     LD_TRACE_LOADED_OBJECTS
			When  set  to  a  nonempty string, causes ld-elf.so.1 to
			exit after loading the shared  objects	and  printing  a
			summary which includes the absolute pathnames of all ob-
			jects, to standard output.

     LD_TRACE_LOADED_OBJECTS_ALL
			When set to a nonempty string, causes ld-elf.so.1 to ex-
			pand  the  summary to indicate which objects caused each
			object to be loaded.

     LD_TRACE_LOADED_OBJECTS_FMT1

     LD_TRACE_LOADED_OBJECTS_FMT2
			When set, these  variables  are  interpreted  as  format
			strings a la printf(3) to customize the trace output and
			are  used  by ldd(1)'s -f option and allows ldd(1) to be
			operated as a filter more conveniently.   The  following
			conversions can be used:

			%a    The   main   program's   name   (also   known   as
			      "__progname").

			%A    The   value   of	  the	 environment	variable
			      LD_TRACE_LOADED_OBJECTS_PROGNAME

			%o    The library name.

			%m    The library's major version number.

			%p    The  full pathname as determined by rtld's library
			      search rules.

			%x    The library's load address.

			Additionally, `\n' and	`\t'  are  recognized  and  have
			their usual meaning.

FILES
     /var/run/ld-elf.so.hints  Hints file.
     /etc/libmap.conf	       The libmap configuration file.

SEE ALSO
     ld(1), ldd(1), elf(5), libmap.conf(5), ldconfig(8)

FreeBSD 6.0			  May 31, 2003				 RTLD(1)

home | help