Buscar bibliotecas compartidas de un programa usando el comando «ldd

Buscar bibliotecas compartidas de un programa usando el comando “ldd

Buscar bibliotecas compartidas de un programa usando el comando «ldd

VALORACIÓN DEL ARTÍCULO:
5/5


Utilice el comando ldd para mostrar las bibliotecas compartidas requeridas por cualquier programa dado – útil para calcular cuando falta una dependencia. El comando también lista las funciones y objetos que faltan.

Sintaxis del comando ldd

Observe la sintaxis correcta del comando ldd para evitar errores:

ldd[OPCIÓN].... ARCHIVO....

Utilice uno o más de los comandos ldd disponibles, insertados en el punto [OPTION] del comando anterior:

--help | imprimir esta ayuda y salir
--version | información de la versión de impresión y exit
-d, --data-relocs | reubicación de datos de proceso
-r, --function-relocs | datos de proceso y reubicaciones de funciones
-u, --no utilizado | imprimir dependencias directas no utilizadas
-v, --verbose | imprimir toda la información

Cómo usar el comando ldd

Ejecute el siguiente comando para obtener más información sobre un programa:

$ldd -v /path/to/program/executable

La salida muestra información de la versión, así como las rutas y direcciones de las bibliotecas compartidas, de esta manera:

 $ldd libshared.so 
linux-vdso.so.1 => (0x00007fff26ac8000)
libc.so.6 => /lib/libc.so.6 0x0000007ff1df55a000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)

Si el archivo SO no existe, puede encontrar las bibliotecas que faltan usando el siguiente comando:

$ldd -d path/to/program

La salida es similar a la siguiente:

 linux-vdso.so.1 (0x00007ffc2936b000)
/home/gary/demo/garylib.so => not foundlibc.so.6 => usr/lib/libc.so.6 (0x00007fd0c6259000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd0c65fd000)

Nunca ejecute el comando ldd contra un programa no confiable porque el ldd podría realmente ejecutarlo. En su lugar, utilice una alternativa más segura que muestre sólo las dependencias directas y no todo el árbol de dependencias:

$objdump -p /p /path/to/program | grep NEED

Cómo encontrar la ruta a una aplicación

Debe proporcionar la ruta completa a una aplicación si desea encontrar sus dependencias con ldd, lo que puede hacer de varias maneras.

Por ejemplo, así es como encontrarías el camino a Firefox:

 $find / -nombre firefox

El problema con el comando find, sin embargo, es que no sólo listará el ejecutable, sino también todos los lugares donde se encuentra Firefox, como este:

  • /etc/skel/.mozilla/firefox
  • /Inicio//cache/mozilla/firefox
  • /home///.mozilla/firefox
  • /usr/bin/Firefox
  • /usr/lib/Firefox
  • /usr/lib/Firefox/Firefox

Este enfoque es un poco exagerado y puede que necesites usar el comando sudo para elevar tus privilegios, de lo contrario es probable que obtengas muchos errores de denegación de permiso.

En cambio, es mucho más fácil usar el comando whereis para encontrar la ruta de una aplicación:

$whereis firefox

Esta vez la salida podría ser así:

/usr/bin/firefox

/etc/firefox

/usr/lib/firefox

Todo lo que tienes que hacer ahora para encontrar las bibliotecas compartidas para Firefox es escribir el siguiente comando:

$ldd /usr/bin/firefox

La salida del comando será algo así:

linux-vdso.so.1 (0x0000007ffff8364000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007feb9917a000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007feb98f76000)
libstdc++.so.6 => /usr/lib/lib/libstdc++.so.6 (0x00007feb98bf4000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007feb988f6000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007feb986e0000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007feb9833c000)
/lib64/ld-linux-x86-64.so.2 (0x00007feb99397000)

Linux-vdso.so.1 es el nombre de la biblioteca y el número hexadecimal es la dirección donde se cargará la biblioteca en la memoria.

Notarás en muchas de las otras líneas que el símbolo => es seguido por un camino. Esta es la ruta al binario físico; el número hexadecimal es la dirección donde se cargará la biblioteca.

TAMBIÉN TE INTERESA

fusión-Orange-MásMóvil

Orange y MásMóvil: arranca el nuevo gigante de las teleco en España

Orange y MásMóvil han anunciado al fin la formación de su nueva empresa conjunta, completando así el acuerdo para fusionar sus operaciones en España. Tras años de negociación, se ha completado una operación que ha dado lugar a la creación de la mayor operadora de telecomunicaciones en España. Los accionistas de ambas compañías poseen el

Instagram-Creator-Marketplace

España, a la espera del Instagram Creator Marketplace

Instagram es una de las redes sociales de mayor impacto en la población española. Desde su irrupción, la figura del influencer ha crecido enormemente en el mundo del marketing y las marcas. La herramienta Instagram Creator Marketplace puede seguir fortaleciendo a estos prescriptores, visto el potencial que empieza a tener este servicio en Estados Unidos.

avatares-Roblox

Vámonos de shopping en Roblox: Mango inaugura su primera tienda

En dinámico mundo de los juegos online, Roblox (con más de 70 millones de usuarios activos diarios) se ha destacado como una plataforma que ofrece a los participantes una experiencia única y diversa. Una de las características más populares de Roblox es su sistema de personalización de avatares, que permite a los jugadores expresar su

Snapdragon-8-Gen-3

Snapdragon 8 Gen 3, el chip de Qualcomm que empujará la IA en los móviles

La IA ha llegado al universo de los smartphones. Los últimos lanzamientos ya se anuncian con la inteligencia como protagonista. De igual manera, las grandes actualizaciones de software vienen marcada por la presencia de nuevas funciones movidas bajo los parámetros de la inteligencia artificial generativa. Al margen de los desarrollos a nivel de software, es

Ecowatch-1-de-Maxcom

Con el Ecowatch 1 no tendrás excusas para pasarte a un reloj inteligente

Sabemos que es muy difícil convencer a un perfil de personas que reniegan de un smartwatch a comprarse un reloj inteligente y quitarse el de toda la vida. No obstante, vamos a intentarlo con el Ecowatch 1 de Maxcom.  Es tarea complicada porque el gusto por los relojes suele estar muy definido en ciertas personas.