Provided by:
manpages-es_1.55-8_all 
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)