ld.so

ld.so(8)                    System Manager's Manual                   ld.so(8)



NOMBRE
       ld.so, ld-linux.so* - enlazador/cargador dinámico

DESCRIPCIÃN
       Los programas ld.so y ld-linux.so* encuentran y cargan las bibliotecas
       compartidas requeridas por un programa, preparan al programa para
       ejecutarse y lo ejecutan.

       Los ficheros binarios en Linux requieren enlace dinámico (enlace en
       tiempo de ejecución) a menos que se dé la opción -static a ld
       durante la compilación.

       El programa ld.so maneja ficheros binarios con el formato a.out, un
       formato usado hace tiempo; ld-linux.so* maneja el formato ELF (/lib/ld-
       linux.so.1 para libc5, /lib/ld-linux.so.2 para glibc2), que es el que
       se lleva usando desde hace unos años.  Por lo demás, ambos tienen el
       mismo comportamiento y usan los mismos ficheros de configuración y
       programas ldd(1), ldconfig(8) y /etc/ld.so.conf.

       Las bibliotecas compartidas que necesita un programa se buscan en
       varios lugares:

       o      (sólo para ELF) Usando el atributo dinámico de sección
              DT_RPATH del binario si está presente y el atributo DT_RUNPATH
              no existe.  No se aconseja el uso de DT_RPATH.

       o      Usando la variable de entorno LD_LIBRARY_PATH, salvo cuando el
              ejecutable tiene activo el bit setuid/setgid, en cuyo caso se
              ignora.

       o      (sólo para ELF) Usando el atributo dinámico de sección
              DT_RUNPATH del binario si está presente.

       o      A partir del fichero caché /etc/ld.so.cache, que contiene una
              lista compilada de bibliotecas candidatas encontradas
              previamente en la ruta de bibliotecas ampliada. Si, sin embargo,
              el binario fue enlazado con la opción -z nodeflib, las
              bibliotecas que se encuentran en las rutas predeterminadas son
              omitidas.

       o      En la ruta predeterminada /lib, y después en /usr/lib.  Si el
              binario fue enlazado con la opción -znodeflib, se omite este
              paso.

SINOPSIS
       El enlazador dinámico puede ejecutarse bien indirectamente, al
       ejecutar un programa o biblioteca enlazado dinámicamente (en cuyo caso
       no pueden pasarse opciones en la lÃnea de órdenes al enlazador
       dinámico y, en el caso del formato ELF, se ejecuta el enlazador
       dinámico que se encuentra almacenado en la sección .interp del
       programa), bien directamente ejecutando:

       /lib/ld-linux.so.*  [OPCIONES] [PROGRAMA [ARGUMENTOS]]

OPCIONES DE LA LÃNEA DE ÃRDENES
       --list Lista todas las dependencias y cómo se resuelven.

       --verify
              Comprueba que el programa está enlazado dinámicamente y que el
              enlazador dinámico puede tratarlo.

       --library-path PATH
              Sobreescribe la variable de entorno LD_LIBRARY_PATH (vea más
              abajo).

       --ignore-rpath LIST
              Ignora la información de RPATH y RUNPATH en los nombres de
              objeto en LIST.  Esta opción fue soportada por glibc2
              aproximadamente durante una hora.  Después se renombró a:

       --inhibit-rpath LIST

ENTORNO
       Hay cuatro variables de entorno relevantes.

       LD_LIBRARY_PATH
              Una lista de directorios separados por dos puntos en los que se
              buscan las bibliotecas ELF en tiempo de ejecución.  Similar a
              la variable de entorno PATH.

       LD_PRELOAD
              Una lista adicional de biliotecas compartidas ELF especificadas
              por el usuario y separadas por blancos que se cargan antes que
              el resto.  Puede ser utilizada para sobreescribir funciones en
              otras bibliotecas compartidas de manera selectiva.  Para
              binarios ELF con el bit setuid/setgid activo, sólo se cargan
              las biliotecas en los directorios de búsqueda estándares que
              también tienen activo el bit setuid.

       LD_BIND_NOW
              (libc5; glibc desde la versión 2.1.1) Si su valor no es la
              cadena vacÃa, el enlazador dinámico resuelve todos los sÃmbolos
              al comienzo del programa, en lugar de aplazar la resolución de
              las llamadas a funciones hasta el punto donde son referenciadas
              por primera vez.  Es útil cuando se utiliza un depurador.

       LD_TRACE_LOADED_OBJECTS
              (sólo para ELF) Si su valor no es la cadena vacÃa, el programa
              produce un listado de las bibliotecas dinámicas de las que
              depende, como si se hubiera ejecutado con ldd(1), en lugar de
              ejecutar el programa normalmente.

       También hay un montón de variables más o menos oscuras, muchas
       obsoletas o sólamente para uso interno.

       LD_WARN
              (sólo para ELF)(glibc desde la versión 2.1.3) Si su valor no
              es la cadena vacÃa, avisa sobre los sÃmbolos sin resolver.

       LD_NOWARN
              (sólo para a.out)(libc5) Suprime los avisos sobre las
              bibliotecas a.out con números de versión menor incompatibles.

       LD_BIND_NOT
              (glibc desde la versión 2.1.95) No actualiza el GOT (global
              offset table - tabla de desplazamientos global) ni el PLT
              (procedure linkage table - tabla de enlace de procedimientos)
              después de resolver un sÃmbolo.

       LD_DEBUG
              (glibc desde la versión 2.1) Produce abundante información de
              depuración acerca del enlazador dinámico. Si se le asigna el
              valor all imprime toda la información de depuración que posee,
              si se le asigna el valor help imprime un mensaje de ayuda con
              las categorÃas que pueden especificarse en esta variable de
              entorno.

       LD_DEBUG_OUTPUT
              (glibc desde la versión 2.1) Fichero donde irá a parar la
              salida de LD_DEBUG, si no se especifica se asume la salida
              estándar.  LD_DEBUG_OUTPUT se ignora para los binarios con el
              bit setuid/setgid activo.

       LD_VERBOSE
              (glibc desde la versión 2.1) Si su valor no es la cadena vacÃa,
              muestra información sobre las versiones de los sÃmbolos cuando
              se está solicitando información sobre el programa (es decir, o
              bien se ha activado LD_TRACE_LOADED_OBJECTS, o bien se ha dado
              al enlazador dinámico la opción --list o --verify).

       LD_PROFILE
              (glibc desde la versión 2.1) Objeto compartido para el que se
              desea obtener el perfil.

       LD_PROFILE_OUTPUT
              (glibc desde la versión 2.1) Fichero donde irá a parar la
              salida de LD_PROFILE, si no se especifica se asume la salida
              estándar.  LD_DEBUG_OUTPUT se ignora para los binarios con el
              bit setuid/setgid activo.

       LD_AOUT_LIBRARY_PATH
              (libc5) Versión de LD_LIBRARY_PATH sólo para los binarios
              a.out. Las versiones anteriores de ld-linux.so.1 también
              soportaban LD_ELF_LIBRARY_PATH.

       LD_AOUT_PRELOAD
              (libc5) Versión de LD_PRELOAD sólo para los binarios a.out.
              Las versiones anteriores de ld-linux.so.1 también soportaban
              LD_ELF_PRELOAD.

       LD_SHOW_AUXV
              (glibc desde la versión 2.1) Muestra el array auxiliar que se
              pasa desde el núcleo.

       LD_HWCAP_MASK
              (glibc desde la versión 2.1) Máscara para las capacidades
              hardware.

       LD_ORIGIN_PATH
              (glibc desde la versión 2.1) Ruta donde se encuentra el binario
              (para programas con el bit setuid desactivado).

       LD_DYNAMIC_WEAK
              (glibc desde la versión 2.1.91) Permite que los sÃmbolos
              débiles se puedan sobrescribir (volviendo al antiguo
              comportamiento de glibc).

       LD_KEEPDIR
              (sólo para a.out)(libc5) No ignora el directorio en los nombres
              de las bibliotecas a.out que son cargadas.  El uso de esta
              opción está fuertemente desaconsejado.

       LDD_ARGV0
              (libc5) argv[0] a ser usado por ldd(1) cuando no hay ninguno.

FICHEROS
       /lib/ld.so
              enlazador/cargador dinámico
       /lib/ld-linux.so.{1,2}
              enlazador/cargador dinámico ELF
       /etc/ld.so.cache
              Fichero que contiene una lista compilada de directorios en los
              que buscar biliotecas y una lista ordenada de bibliotecas
              candidatas.
       /etc/ld.so.preload
              Fichero que contiene una lista de bibliotecas compartidas ELF
              separadas por blancos que son cargadas antes que el programa.
       lib*.so*
              bibliotecas compartidas

OBSERVACIONES
       La funcionalidad ld.so está disponible para ejecutables compilados
       usando la versión 4.4.3 de libc o posterior.  La funcionalidad ELF
       está disponible desde la versión 1.1.52 de Linux y libc5.

VÃASE TAMBIÃN
       ldd(1), ldconfig(8)



                               16 diciembre 2001                      ld.so(8)