Provided by: manpages-es_4.27.0-1_all bug

NOMBRE

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

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]]

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(1) durante la compilación.

       El programa ld.so maneja ficheros binarios con el  formato  a.out,  un  formato  usado  hace  tiempo.  El
       programa  ld-linux.so*  maneja  el  formato  ELF  (/lib/ld-linux.so.1 para libc5, /lib/ld-linux.so.2 para
       glibc2), más moderno. 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).

       Cuando  se resuelven las dependencias de objetos compartidos, el enlazador dinámico empieza por comprobar
       cada dependencia para ver si contiene alguna barra (lo cual puede ocurrir si, al enlazar,  definimos  una
       ruta  que  contenía  alguna).  Si  se encuentra una barra, la cadena se interpreta como un nombre de ruta
       (puede ser absoluto o relativo) y se cargará el objeto compartido con dicha ruta.

       Si la dependencia del objeto compartido no contiene ninguna barra, ésta se buscara en este orden:

       (1)  Se utilizan los directorios especificados en el atributo de sección dinámica DT_RPATH del binario si
            está y si no existe el atributo DT_RUNPATH.

       (2)  Usando la variable de entorno LD_LIBRARY_PATH, salvo cuando se ejecute en modo seguro, en cuyo  caso
            la variable será ignorada.

       (3)  Mediante  los directorios definidos en el atributo de la sección dinámica de DT_RUNPATH del binario,
            si existe. Solo se buscará en estos directorios los objetos requeridos en las entradas de  DT_NEEDED
            (dependencias  directas) pero no en los descendientes de estos objetos. Éstos últimos deben tener su
            propia entrada DT_RUNPATH. Esto es distinto de  DT_RPATH,  que  se  usa  para  buscar  a  todos  los
            descendientes en el árbol de dependencias.

       (4)  A  partir  del  fichero  de  caché /etc/ld.so.cache, que contiene una lista compilada de bibliotecas
            candidatas encontradas previamente en la ruta de bibliotecas ampliada. Sin embargo,  si  el  binario
            fue  enlazado  con  la  opción -z nodefaultlib, se omitirán las bibliotecas que se encuentran en las
            rutas predeterminadas. Se prefieren los objetos compartidos instalados en directorios de capacidades
            de hardware (vea más adelante) antes que los otros.

       (5)  En las rutas por defecto: /lib y  /usr/lib (en algunas arquitecturas  de  64  bits,  las  rutas  por
            defecto  para  estos  objetos compartidos son /lib64 y /usr/lib64. Si el binario fue enlazado con la
            opción  -z nodefaultlib, se omite este paso.

   Token de cadena dinámica
       En varios lugares, el enlazador expandirá los tokens de cadena dinámica:

       •  En las variables de entorno LD_LIBRARY_PATH, LD_PRELOAD y LD_AUDIT,

       •  en los valores de las etiquetas de  sección  dinámica  DT_NEEDED,  DT_RPATH,  DT_RUNPATH,  DT_AUDIT  y
          DT_DEPAUDIT, también binarios ELF,

       •  en varios argumentos de la orden ld.so: --audit, --library-path y --preload, por último

       •  en el argumento del nombre de archivo de las funciones dlopen(3) y dlmopen(3).

       Los tokens sustituidos con como sigue:

       $ORIGIN (o el equivalente ${ORIGIN})
              Esto  se  expandirá  con  el directorio que contiene el programa o los objetos compartidos. Por lo
              tanto, una aplicación que se encuentre en /dir/app se podría compilar con

                  gcc -Wl,-rpath,'$ORIGIN/../lib'

              para que encuentre  el objeto compartido en dir/lib pudiendo el directorio /dir  estar  localizado
              en  cualquier  punto del árbol de directorios. Esto evita que las aplicaciones deban instalarse en
              un directorios concreto sino  que  podrán  acceder  a  sus  objetos  compartidos  desde  cualquier
              directorio.

       $LIB (o su equivalente ${LIB})
              Esto  se  interpretaría como lib o lib64 según la arquitectura (lógicamente si es x86-64 lo hará a
              lib64 y si es x86-32 lo hará a lib).

       $PLATFORM (o su equivalente ${PLATFORM})
              Esto se expandirá en una cadena de texto correspondiente al tipo de procesador del  sistema   (por
              ejemplo,  "x86_64").  En  algunas  arquitecturas,  el núcleo de Linux no proporciona una cadena de
              plataforma al enlazador dinámico. El valor de esta cadena se extrae de AT_PLATFORM  en  el  vector
              auxiliar (consulte getauxval (3)).

       Observe  que  los tokens de cadena dinámicas tienen que entrecomillarse correctamente cuando se definen a
       través de una shell para evitar que se interpreten como variables de entorno o de la propia shell.

OPCIONES

       --preload list (a partir de glibc 2.33)
              Define el valor string para argv[0] antes de ejecutar la aplicación.

       --audit lista
              Utilice los objetos nombrados en lista como auditores. Los objetos en lista ese delimitan entre si
              por dos puntos.

       --glibc-hwcaps-mask lista
              sólo busca en los subdirectorios definidos si están en lista.

       --glibc-hwcaps-prepend lista
              Busca los subdirectorios glibc-hwcaps de la lista

       --inhibit-cache
              No emplee /etc/ld.so.cache.

       --library-path ruta
              Emplee path en lugar de la configuración de  la  variable  de  entorno  LD_LIBRARY_PATH  (vea  más
              adelante).   Los   nombres   ORIGIN,   LIB  y  PLATFORM  se  entienden  dirigidos  a  la  variable
              LD_LIBRARY_PATH.

       --inhibit-rpath lista
              Ignora la información de RPATH y RUNPATH en los nombres de objeto en list. Esta opción  se  ignora
              si  la  ejecución se realiza en modo seguro (vea más adelante). Los objetos de la lista se separan
              mediante espacio o con dos puntos.

       --list Lista todas las dependencias y cómo se resuelven.

       --list-diagnostics (a partir de glibc 2.33)
              Muestra información de diagnóstico del sistema en formato no  legible  por  humanos:  por  ejemplo
              algunas  variables  internas del cargador, el vector auxiliar (véase getauxval(3)) y las variables
              de entorno. En algunas arquitecturas, la orden  puede  mostrar  información  adicional  (como  las
              características   de  la  cpu  usadas  en  la  selección  indirecta  de  funciones  GNU  en  x86).
              --list-tunables (desde glibc 2.33) muestra los nombres y valores de todas las variables, junto con
              los valores mínimo y máximo permitidos.

       --preload list (a partir de glibc 2.30)
              Carga previamente los objetos especificados en list, separados entre  si  por  dos  puntos  o  por
              espacios. Estos objetos se cargarán previamente tal como se explica más adelante en la descripción
              de la variable LD_PRELOAD.

              Contrariamente al use de LD_PRELOAD, la opción --preload permite realizar una carga previa para un
              solo  ejecutable  sin  afectar  a las cargas de otras procesos hijos de éste que ejecuten un nuevo
              programa.

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

ENTORNO

       Diversas variables de entorno influyen en el funcionamiento del enlazador.

   Modo de ejecución seguro
       Por razones de seguridad, si el enlazador dinámico determina que un binario debe ejecutarse  en  modo  de
       ejecución  segura,  se  anularán  los  efectos  de algunas variables de entorno, además esas variables se
       eliminan del entorno, de forma que el programa ni siquiera las ve. Algunas de estas variables de  entorno
       afectan  al funcionamiento del propio enlazador dinámico, y se describen a continuación.  Otras variables
       de entorno tratadas de esta manera incluyen GCONV_PATH, GETCONF_DIR, HOSTALIASES, LOCALDOMAIN,  LD_AUDIT,
       LD_DEBUG,  LD_DEBUG_OUTPUT,  LD_DYNAMIC_WEAK, LD_HWCAP_MASK, LD_LIBRARY_PATH, LD_ORIGIN_PATH, LD_PRELOAD,
       LD_PROFILE,  LD_SHOW_AUXV,  LOCALDOMAIN,  LOCPATH,  MALLOC_TRACE,  NIS_PATH,  NLSPATH,  RESOLV_HOST_CONF,
       RES_OPTIONS, TMPDIR, y TZDIR.

       Un  binario  se  ejecuta en modo seguro si la entrada AT_SECURE en el vector auxiliar (consulte getauxval
       (3)) tiene un valor distinto de cero. Esta entrada puede tener un  valor  distinto  de  cero  por  varias
       razones:

       •  Si  difieren  las  ID  de usuario reales y efectivas del proceso o las ID de grupo reales y efectivas.
          Esto suele ocurrir como resultado de  la  ejecución  de  una  apliación  con  los  bits  activados  de
          set-user-ID or set-group-ID.

       •  Un  proceso  ejecutado por un usuario distinto al administrador ejecuta un binario que confiere alguna
          capacidad al mismo.

       •  Es posible que un módulo de seguridad de Linux haya definido un valor distinto de cero.

   Variables de entorno
       Las variables de entorno más relevantes son las siguientes:

       LD_ASSUME_KERNEL (desde glibc 2.2.3 hasta glibc 2.36)
              Cada objeto compartido puede indicarle al enlazador dinámico la versión mínima de ABI  del  núcleo
              que requiere. Este requisito está codificado en una sección de notas ELF que se puede ver mediante
              readelf -n  en  una  sección  etiquetada como NT_GNU_ABI_TAG. Al ejecutarse, el enlazador dinámico
              determina la versión de ABI del núcleo en ejecución y rechazará la carga  de  objetos  compartidos
              que especifiquen versiones mínimas de ABI mayores que esa versión de ABI.

              LD_ASSUME_KERNEL puede usarse para hacer que el enlazador dinámico asuma que se está ejecutando en
              un sistema con una versión de ABI de núcleo diferente. Por ejemplo, la siguiente orden hace que el
              enlazador  dinámico  asuma que se está ejecutando en Linux 2.2.5 al cargar los objetos compartidos
              requeridos por myprog:

                  $ LD_ASSUME_KERNEL=2.2.5 ./myprog

              En  sistemas  que  proporcionan  múltiples  versiones  de  un  objeto  compartido  (en  diferentes
              directorios en la ruta de búsqueda) que tienen diferentes requisitos mínimos de versión de ABI del
              kernel,  se  puede  usar  LD_ASSUME_KERNEL  para  seleccionar  la  versión  del  objeto que se usa
              (dependiendo del orden de búsqueda del directorio).

              Históricamente, el uso más común de la función LD_ASSUME_KERNEL era  seleccionar  manualmente  los
              antiguos  subprocesos POSIX de LinuxThreads en sistemas que proporcionaban tanto LinuxThreads como
              NPTL (que normalmente era el predeterminado); consulte pthreads (7).

       LD_BIND_NOW (desde glibc 2.1.1)
              Si su valor es distinto de cero, hará que el enlazador dinámico resuelva  todos  los  símbolos  al
              iniciarse  el  programa en lugar de hacerlo la primera vez que se hace referencia a ellos. Esto es
              especialmente útil cuando estamos usando un depurador.

       LD_LIBRARY_PATH
              Lista de directorios donde encontrar librerías ELF durante la ejecución.  Los  componentes  de  la
              lista  estarán  separados entre si o bien por punto y coma o bien por dos puntos no siendo posible
              usar una secuencia de escape para ninguno de ellos. Si la longitud del nombre  del  directorio  es
              cero, se entenderá el directorio actual.

              Esta variable se ignora en el modo de ejecución seguro.

              Dentro  de los nombres de ruta especificados en LD_LIBRARY_PATH, el enlazador dinámico expande los
              tokens $ ORIGIN, $ LIB e $ PLATFORM (o las versiones que usan llaves  alrededor  de  los  nombres)
              como  se  ha  descrito  anteriormente  en  Tokens de cadena dinámica. Por ejemplo, para buscar una
              biblioteca en el subdirectorio lib o lib64 dentro  del  directorio  que  contiene  el  programa  a
              ejecutar:

                  $ LD_LIBRARY_PATH='$ORIGIN/$LIB' prog

              (Observe  el  uso  de  comillas  simples  para  evitar que la shell interprete $ORIGIN y $LIB como
              variables)

       LD_PRELOAD
              Una lista con una serie adicional, especificados por el usuario,  de objetos compartidos ELF  para
              ser  cargados  antes que todos los demás. Esto puede usarse para anular en casos concretos algunas
              funciones en otros objetos compartidos.

              Los componentes de esta lista puede separarse entre si mediante dos  puntos  o  mediante  punto  y
              coma. No existe una secuencia de escape para estos dos caracteres. Se buscan los objetos empleando
              la regla definida en DESCRIPTION, se van añadiendo al mapa de enlaces de izquierda a derecha según
              se especifica en la lista.

              En  el  modo  de ejecución seguro, se ignoran los nombres de ruta de precarga si contienen barras.
              Además, los objetos compartidos se precargan solo desde los directorios  de  búsqueda  estándar  y
              solo si tienen habilitado el bit set-user-ID (lo cual no es habitual).

              Dentro  de  los nombres especificados en la lista LD_PRELOAD, el enlazador dinámico interpreta los
              tokens $ ORIGIN, $ LIB e $ PLATFORM (o los equivalente con llaves alrededor de los  nombres)  como
              se  ha descrito anteriormente en tokens de cadena dinámica. (Véase también la explicación sobre el
              entrecomillado en el apartado LD_LIBRARY_PATH.)

              Existen varias formas de indicar las bibliotecas que se deben precargar, siguiendo este orden:

              (1)  La variable de entorno LD_PRELOAD.

              (2)  Indicar en la línea de  órdenes  la  opción  --preload  cuando  se  ejecute  directamente  el
                   enlazador dinámico.

              (3)  Desde el archivo /etc/ld.so.preload (explicado más adelante).

       LD_TRACE_LOADED_OBJECTS
              Si está definido (cualquiera que sea su valor) hará que el programa liste sus dependencias como si
              fuese ejecutado por ldd(1) en lugar de directamente.

       Hay muchas más variables más o menos crípticas, muchas de ellas anticuadas o para uso interno.

       LD_AUDIT (desde glibc 2.4)
              Una  lista de objetos compartidos ELF especificados por el usuario que se cargarán antes que todos
              los demás en un espacio de nombres de enlazador separado (es decir, uno que no  interfiera  en  el
              enlazado  de  símbolos  del  proceso)  Estos  objetos se pueden usar para auditar la operación del
              enlazador dinámico. Los elementos de la lista están separados entre si por dos puntos y no  existe
              ninguna secuencia de escape para este separador.

              Se ignora LD_AUDIT en el modo de ejecución seguro.

              El  enlazador dinámico notificará a los objetos compartidos de auditoría en los llamados puntos de
              control de auditoría, por ejemplo, cargando un nuevo objeto compartido, resolviendo un  símbolo  o
              llamando  a  un  símbolo  de  otro  objeto compartido (llamando a una función apropiada dentro del
              objeto compartido de auditoría). Para obtener más información, consulte rtld-audit (7) La interfaz
              de auditoría es en gran medida compatible con la proporcionada en Solaris, como se describe en  su
              Linker and Libraries Guide, en el capítulo Runtime Linker Auditing Interface.

              Dentro  de  los  nombres  especificados en la lista LD_AUDIT, el enlazador dinámico interpreta los
              tokens $ ORIGIN, $ LIB e $ PLATFORM (o los equivalentes con llaves alrededor de los nombres)  como
              se  ha  descrito  anteriormente  en  tokens  de cadena dinámica. (Véase también la explicación del
              entrecomillado en el apartado LD_LIBRARY_PATH.)

              A partir de la versión 2.13 de glibc, en el modo de ejecución segura, los nombres de la  lista  de
              auditoría  que  contienen  barras  se  ignoran  y  solo  se  cargan los objetos compartidos en los
              directorios de búsqueda estándar que tienen habilitado el bit set-user-ID.

       LD_BIND_NOT (a partir de glibc 2.1.95)
              Si esta variable de entorno se establece en una cadena  no  vacía,  no  actualiza  GOT  (tabla  de
              compensación global) y PLT (tabla de vinculación de procedimientos) después de resolver un símbolo
              de  función.  Si  con  el  uso  de esta variable, añadimos LD_DEBUG (con las categorías bindings y
              symbols), se pueden observar todos los enlaces de funciones en tiempo de ejecución.

       LD_DEBUG (desde glibc 2.1)
              Muestra información detallada de depuración sobre el funcionamiento  del  enlazador  dinámico.  El
              contenido  de  esta  variable es una o más de las siguientes categorías, separadas por dos puntos,
              comas o (si se entrecomilla el valor) espacios:

              help        Si asignamos el valor help a esta variable, no se ejecutará el programa y se  mostrará
                          un  mensaje de ayuda informando acerca de las categorías que se pueden definir en esta
                          variable de entorno.

              all         Imprime  información  para  la  depuración  (salvo  statistics  ni   unused;   vea   a
                          continuación.

              bindings    Muestra información sobre la definición a la que está vinculado cada símbolo.

              files       Muestra el progreso del archivo de entrada.

              libs        Muestra las rutas de búsqueda de las librerias.

              reloc       Muestra el procesamiento de reubicación.

              scopes      Muestra información del alcance.

              statistics  Muestra estadísticas de reubicación.

              symbols     Muestra las rutas de búsqueda para cada búsqueda de símbolo.

              unused      Determina los DSO's sin usar.

              versions    Muestra las dependencias de esa versión.

              Desde  glibc 2.3.4, LD_DEBUG se ignora en el modo de ejecución segura, salvo que exista el archivo
              /etc/suid-debug (el contenido del archivo es irrelevante).

       LD_DEBUG_OUTPUT (desde glibc 2.1)
              Por defecto, la salida LD_DEBUG se escribe a error estándar.  Si  se  define  LD_DEBUG_OUTPUT,  la
              salida  se  escribe  en  el  nombre  de  ruta especificado por su valor, con el sufijo "." (punto)
              seguido del ID de proceso adjunto al nombre de la ruta.

              LD_DEBUG_OUTPUT se ignora en el modo de ejecución seguro.

       LD_DYNAMIC_WEAK (desde glibc 2.1.91)
              Por defecto, cuando el enlazador busque una biblioteca compartida para  encontrar  algún  símbolo,
              tomará la primera definición que encuentre.

              Las  versiones  de  glibc  anteriores a 2.2, lo hacían de otro modo: si el enlazador encontraba un
              símbolo débil, seguiría buscando hasta encontrar  uno  más  fuerte  en  el  resto  de  bibliotecas
              compartidas.  Si  encontrase  uno  más  fuerte, lo usaría.En caso de no encontrar otro más fuerte,
              usaría la definición del débil. Si no se encontrasen más simbolos, el enlazador dinámico usuará el
              símbolo débil encontrado al inicio

              El antiguo comportamiento de glibc no era el  estándar.  (La  práctica  estandarizada  es  que  la
              distinción  entre  símbolos  débiles  y  fuertes  debería  tener  efecto solo durante del enlazado
              estático). En glibc 2.2, el enlazador dinámico se modificó para tener  el  comportamiento  actual,
              que era el comportamiento que ya proporcionaban la mayoría de las otras implementaciones.

              Si  se  define  la  variable de entorno LD_DYNAMIC_WEAK (con cualquier valor) se tendrá el antiguo
              comportamiento glibc (no estándar), mediante el cual un símbolo débil en una biblioteca compartida
              puede ser anulado por un símbolo fuerte posteriormente descubierto en otra biblioteca  compartida.
              (Observe  que  incluso  cuando  se  establece  esta  variable, un símbolo fuerte en una biblioteca
              compartida no anulará una definición débil del mismo símbolo en el programa principal).

              A partir de glibc 2.3.4, LD_DYNAMIC_WEAK se ignora en el modo de ejecución seguro.

       LD_HWCAP_MASK (desde glibc 2.1 hasta glibc 2.38)
              Máscara para capacidades de hardware. A partir de la versión 2.26 de glibc, la  opción  puede  ser
              ignorada si glibc no incluye soporte para tunables.

       LD_ORIGIN_PATH (desde glibc 2.1)
              Ruta donde se encuentra el binario.

              A partir de glibc 2.4, LD_ORIGIN_PATH se ignora en el modo de ejecución seguro.

       LD_POINTER_GUARD (glibc desde la versión 2.4 hasta la 2.22)
              Definir  a  0  para  deshabilitar  la  protección  del  puntero.  Cualquier otro valor habilita la
              protección del puntero (lo hará por defecto).  La  protección  de  punteros  es  un  mecanismo  de
              seguridad  mediante  el cual se alteran de forma semi-aleatoria el código almacenado en la memoria
              del programa grabable  (devuelven  direcciones  guardads  por  setjmp(3)  o  punteros  de  función
              utilizados por varios componentes internos de glibc) para dificultar que un atacante puede usarlos
              si  se  produce  un desbordamiento de búfer o un ataque a la pila. Desde la versión 2.23 de glibc,
              LD_POINTER_GUARD ya no se puede deshabilitar la protección de punteros.

       LD_PROFILE (a partir de glibc 2.1)
              El nombre de un objeto compartido (único) que se va a perfilar, especificado como nombre de ruta o
              como soname. La salida del perfilado se agrega al  archivo  cuyo  nombre  es:  LD_PROFILE_OUTPUT/$
              LD_PROFILE.profile .

              Desde  glibc  2.2.5,  LD_PROFILE utiliza una ruta predeterminada diferente en el modo de ejecución
              segura.

       LD_PROFILE_OUTPUT (desde glibc 2.1)
              Directorio donde se debe escribir la salida de LD_PROFILE. Si esta variable no  está  definida,  o
              está definida como una cadena vacía, se toma por defecto /var/tmp.

              LD_PROFILE_OUTPUT  se  ignora  en  modo  de  ejecución  segura;  en  su  lugar  se utiliza siempre
              /var/profile.

       LD_SHOW_AUXV (desde glibc 2.1)
              Si esta variable de entorno está definida  (con  cualquier  valor),  muestra  la  matriz  auxiliar
              enviada desde el núcleo (vea también getauxval (3)).

              A partir de glibc 2.3.4, LD_SHOW_AUXV se ignora en el modo de ejecución seguro.

       LD_TRACE_PRELINKING (desde glibc 2.4 hasta glibc 2.35)
              Si  se define esta variable de entorno, se hará un seguimiento de la vinculación previa del objeto
              cuyo nombre está asignado a esta variable de entorno. (Utilice ldd (1) para ver los objetos que se
              pueden rastrear.)  Si no se reconoce el nombre  del  objeto,  se  rastrea  toda  la  actividad  de
              preenlace.

       LD_USE_LOAD_BIAS (desde glibc 2.3.3 hasta glibc 2.35)
              De  forma  predeterminada  (es  decir,  si  esta variable no está definida), los ejecutables y los
              objetos compartidos preenlazados respetarán  las  direcciones  base  de  sus  objetos  compartidos
              dependientes, pero los ejecutables independientes de la posición (PIE) (no vinculados previamente)
              y otros objetos compartidos no los respetarán. Si LD_USE_LOAD_BIAS se define con el valor 1, tanto
              los ejecutables como los PIE respetarán las direcciones base. Si LD_USE_LOAD_BIAS se define con el
              valor 0, ni los ejecutables ni los PIE respetarán las direcciones base.

              A partir de glibc 2.3.3 se ignora esta variable en el modo de ejecución seguro.

       LD_VERBOSE (a partir de glibc 2.1)
              Si  se  le  asigna  un  valor de una cadena no vacía y si se ha establecido la variable de entorno
              LD_TRACE_LOADED_OBJECTS,  se generará información sobre la versión del símbolo sobre el programa.

       LD_WARN (desde glibc 2.1.3)
              Si se le asigna como valor una cadena no nula, avisará si detecta símbolos no resueltos.

       LD_PREFER_MAP_32BIT_EXEC (solo en x86-64 y desde glibc 2.23)
              Según la guía de optimización del software Intel Silvermont, para las aplicaciones de 64 bits,  el
              rendimiento de la predicción de ramas puede verse afectado negativamente cuando el objetivo de una
              rama  está  a  más de 4 GB de distancia de ella. Si esta variable de entorno está configurada (con
              cualquier valor), el enlazador dinámico primero intentará mapear páginas ejecutables  usando  mmap
              (2)  MAP_32BIT y volverá a mapear si ese intento falla. NB: MAP_32BIT se asignará a los 2 GB (no 4
              GB) del espacio de direcciones.

              Debido a que MAP_32BIT reduce el rango de direcciones disponible para que el diseño del espacio de
              direcciones sea aleatorio (ASLR), LD_PREFER_MAP_32BIT_EXEC siempre está deshabilitado en  el  modo
              de ejecución segura.

ARCHIVOS

       /lib/ld.so
              enlazador/cargador dinmico

       /lib/ld-linux.so.{1,2}
              Enlazador/cargador dinámico ELF

       /etc/ld.so.cache
              Archivo  que  contiene  una  lista  de directorios donde encontrar objetos compartidos y una lista
              ordenada de los candidatos. Consulte ldconfig(8).

       /etc/ld.so.preload
              Archivo que contiene una lista de objetos compartidos ELF  separados  entre  si  por  espacios  en
              blanco  que  se  cargarán  antes  del programa. Vea el apartado anterior LD_PRELOAD. Si se emplean
              tanto  LD_PRELOAD  como  /etc/ld.so.preload,  las  bibliotecas  especificadas  por  LD_PRELOAD  se
              precargan  primero.  /etc/ld.so.preload  tiene  efecto  en  todo  el  sistema, lo que hace que las
              bibliotecas especificadas se carguen previamente para todos los programas que se  ejecutan  en  el
              sistema.  (En  general,  no  suele  ser  una  opción ideal y por lo tanto, solo se emplea como una
              solución de emergencia, por ejemplo, como una solución temporal para un problema de  configuración
              incorrecta de la biblioteca).

       lib*.so*
              objetos compartidos

NOTAS

   Capacidades hardware anticuadas (a partir de glibc 2.5 hasta 2.37)
       Algunos  objetos  compartidos se compilan utilizando instrucciones específicas de hardware que no existen
       en todas las CPU. Estos objetos deben instalarse en directorios cuyos nombres definan las capacidades  de
       hardware  necesarias,  como  /usr  /lib/sse2/.  El  enlazador  dinámico  compara estos directorios con el
       hardware de la máquina y selecciona la versión más adecuada de un objeto compartido dado. Los directorios
       de capacidad de hardware se pueden conectar en cascada para  combinar  funciones  de  CPU.  La  lista  de
       nombres de capacidad de hardware admitidos depende de la CPU. Actualmente se reconocen los siguientes:

       Alpha  ev4, ev5, ev56, ev6, ev67

       MIPS   loongson2e, loongson2f, octeon, octeon2

       PowerPC
              4xxmac,  altivec,  arch_2_05,  arch_2_06, booke, cellbe, dfp, efpdouble, efpsingle, fpu, ic_snoop,
              mmu, notb, pa6t, power4, power5, power5+, power6x, ppc32, ppc601, ppc64, smt, spe, ucache, vsx

       SPARC  flush, muldiv, stbar, swap, ultra3, v9, v9v, v9v2

       s390   dfp, eimm, esan3, etf3enh, g5, highgprs, hpage, ldisp, msa, stfle, z900, z990, z9-109, z10, zarch

       x86 (solo 32-bit)
              acpi, apic, clflush, cmov, cx8, dts, fxsr, ht, i386, i486, i586, i686, mca, mmx, mtrr,  pat,  pbe,
              pge, pn, pse36, sep, ss, sse, sse2, tm

       La  compatibilidad  con  las  capacidades  de  hardware antiguas tiene el inconveniente de que cada nueva
       función añadida hace crecer exponencialmente la  ruta  de  búsqueda,  porque  hay  que  añadirla  a  cada
       combinación de las demás funciones existentes.

       Por  ejemplo,  en  x86 de 32 bits, si el hardware admite i686 y sse2, la ruta de búsqueda resultante será
       i686/sse2:i686:sse2:..   Una   nueva   capacidad   newcap   establecería   la   ruta   de   búsqueda   en
       newcap/i686/sse2:newcap/i686:newcap/sse2:newcap:i686/sse2:i686:sse2:.

   Capacidad de hardware de glibc (a partir de glibc 2.33)
       glibc 2.33 añadió un nuevo esquema de capcidades de hardware
              donde  bajo cada arquitectura de CPU, se pueden definir ciertos niveles, agrupando el soporte para
              ciertas características o instrucciones especiales.  Cada nivel de arquitectura tiene un  conjunto
              fijo de rutas que añade a la lista de búsqueda del enlazador dinámico, en función del hardware del
              equipo.  Dado que cada nuevo nivel de arquitectura no se combina con otros ya existentes, el nuevo
              esquema ya no tiene el inconveniente de hacer crecer de forma incontrolada la  lista  de  búsqueda
              del enlazador dinámico.

       Por  ejemplo,  en  x86  de  64  bits,  si  el hardware admite x86_64-v3 (por ejemplo, Intel Haswell o AMD
       Excavator),  la  ruta  de  búsqueda   resultante   será   glibc-hwcaps/x86-64-v3:glibc-hwcaps/x86-64-v2:.
       Actualmente se admiten las siguientes rutas, por orden de prioridad:

       PowerPC (64-bit sólo little-endian)
              power10, power9

       s390 (sólo 64-bit)
              z16, z15, z14, z13

       x86 (sólo 64-bit)
              x86-64-v4, x86-64-v3, x86-64-v2

       glibc 2.37 eliminó el soporte para las capacidades de hardware antiguas.

VÉASE TAMBIÉN

       ld(1),  ldd(1),  pldd(1),  sprof(1),  dlopen(3),  getauxval(3),  elf(5),  capabilities(7), rtld-audit(7),
       ldconfig(8), sln(8)

TRADUCCIÓN

       La traducción al español de esta página del manual fue creada por Juan  Piernas  <piernas@ditec.um.es>  y
       Marcos Fouces <marcos@debian.org>

       Esta  traducción  es  documentación  libre;  lea  la GNU General Public License Version 3 o posterior con
       respecto a las condiciones de copyright.  No existe NINGUNA RESPONSABILIDAD.

       Si encuentra algún error en la traducción de esta página  del  manual,  envíe  un  correo  electrónico  a
       debian-l10n-spanish@lists.debian.org.

Páginas de Manual de Linux 6.9.1                   8 Mayo 2024                                          ld.so(8)