LDD(1) Manual del Programador de Linux LDD(1)

ldd - muestra las dependencias de objetos compartidos

ldd [opción]... fichero....

ldd imprime los objetos compartidos (bibliotecas compartidas) requeridos por cada programa u objeto compartido especificado en la línea de órdenes. Un ejemplo de su uso (usando sed (1) para recortar el espacio en blanco inicial para facilitar la lectura) es el siguiente:


$ ldd /bin/ls | sed 's/^ */    /'
    linux-vdso.so.1 (0x00007ffcc3563000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f87e5459000)
    libcap.so.2 => /lib64/libcap.so.2 (0x00007f87e5254000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f87e4e92000)
    libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f87e4c22000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f87e4a1e000)
    /lib64/ld-linux-x86-64.so.2 (0x00005574bf12e000)
    libattr.so.1 => /lib64/libattr.so.1 (0x00007f87e4817000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f87e45fa000)

Normalmente, ldd invoca el enlazador dinámico estándar (consulte ld.so(8)) con la variable de entorno LD_TRACE_LOADED_OBJECTS con el valor 1. Esto hará que el enlazador dinámico inspeccione las dependencias dinámicas del programa, encuentre (según las reglas descritas en ld.so(8)) y cargue los objetos para satisfacerlas. Para cada dependencia, ldd muestra la ubicación del objeto coincidente y la dirección (hexadecimal) en la que se carga. (Las dependencias compartidas linux-vdso e ld-linux son especiales; consulte vdso(7) y ld.so(8).)

Tenga en cuenta que en algunas circunstancias (por ejemplo, cuando el programa especifica un intérprete ELF distinto de ld-linux.so), algunas versiones de ldd pueden intentar averiguar las dependencias intentando ejecutar directamente el programa, lo que puede dar lugar a la ejecución de cualquier código definido en el intérprete ELF del mismo, y quizás a su ejecución. (En las versiones de glibc anteriores a 2.27, la implementación de ldd original hacía esto, aunque la mayoría de las distribuciones proporcionaron una versión modificada para evitarlo.

De ahí que NUNCA se debería usar ldd con un ejecutable del que no se conozca su procedencia, ya que podría ejecutar código malicioso. Una alternativa más segura para dichos ejecutables desconocidos sería:


$ objdump -p /ruta/hasta/el/program | grep NEEDED

Esta alternativa sólo mostrará las dependencias directas del ejecutable, mientras que ldd muestra el árbol completo.

--version
Imprime el número de versión de ldd.
-v, --verbose
Muestra toda la información, incluyendo p.e. información sobre versiones de símbolos.
-u, --unused
Muestra las dependencias directas sin usar (a partir de glibc 2.3.4).
-d, --data-relocs
Lleva a cabo las relocalizaciones e informa de cualquier objeto no encontrado (sólo ELF).
-r, --function-relocs
Lleva a cabo las relocalizaciones para los objetos de datos y las funciones, e informa de cualquier objeto o función no encontrados (sólo ELF).
--help
Información de uso.

ldd no funciona con bibliotecas compartidas a.out.

ldd no funciona con algunos programas a.out extremadamente antiguos que fueron construidos antes de que el soporte para ldd fuera añadido a las versiones de los compiladores. Si usa ldd con alguno de estos programas, el programa intentará ejecutarse con argc = 0 y los resultados serán impredecibles.

pldd(1), sprof(1), ld.so(8), ldconfig(8)

Esta página es parte de la versión 5.11 del proyecto Linux man-pages. Puede encontrar una descripción del proyecto, información sobre cómo informar errores y la última versión de esta página en https://www.kernel.org/doc/man-pages/.

La traducción al español de esta página del manual fue creada por Miguel Pérez Ibars <mpi79470@alu.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>..

22 Marzo 2021