Cómo usar el comando LDD en Linux

¿Se pregunta cómo usar el comando LDD en Linux?

Linux ofrece una amplia flexibilidad, ya que le permite ajustar su sistema de acuerdo con sus necesidades. Eso significa que puede operar fácilmente su sistema a través del Terminal. Además, puede controlar varios parámetros y controlar los archivos compartidos y utilizados por diferentes programas en su sistema.

Un comando, en particular, le permite reconocer las bibliotecas utilizadas por un programa determinado bajo inspección. Este es el comando LDD desarrollado por Roland McGrath y Ulrich Drepper.

LDD (List Dynamic Dependencies) facilita al usuario identificar las dependencias de la biblioteca que se comparten entre varios archivos ejecutables.

Esta guía le ayudará a aprender a usar el comando LDD en Linux.

Así que sin más preámbulos, ¡comencemos!

Tipos de Bibliotecas.

Una biblioteca es un conjunto bien definido de funciones, objetos, variables, clases, especificaciones de tipos, condiciones y subrutinas que dictan las operaciones de archivos y programas, sin tener que mantener el código fuente.

Hay tres tipos de bibliotecas:

  1. Bibliotecas dinámicas: Son bibliotecas utilizadas por programas que se compilan a menor escala. Como su nombre indica, se carga dinámicamente en el momento de la ejecución, por lo que una sola copia se utiliza dinámicamente para ejecutar varios programas.

Esto reduce el consumo de memoria, minimizando así el tamaño del programa y mejorando el rendimiento. Por lo general, tienen extensiones “.so“.

  1. Bibliotecas estáticas: Estas bibliotecas son utilizadas por programas completos. Enlazan programas sin recompilar el código fuente, ahorrando tiempo. Estas bibliotecas se incluyen por separado en los archivos de programa que requieren sus funciones. Suelen ir seguidas de una extensión ” .a“.
  2. Bibliotecas compartidas: Se trata de bibliotecas instaladas de forma individual que los programas utilizan automáticamente en el momento de la instalación. Pueden anular partes específicas de una biblioteca preexistente cuando el programa está realizando ciertas tareas. Además, se pueden usar en tiempo de ejecución con nuestro código o un programa.

La mayoría de los archivos ejecutables que usamos en el día a día contienen bibliotecas compartidas. El comando LDD enumera las dependencias de la biblioteca dinámica. Estas bibliotecas se reutilizan y se comparten entre programas para facilitar el desarrollo de programas y reducir su tamaño y carga en la memoria de la computadora.

En Linux, estos archivos tienen la forma de una extensión” .so ” y se almacenan en /usr/lib* o simplemente /lib*.

Varias distribuciones de sistemas Linux pueden empaquetar un conjunto diferente de bibliotecas para un programa, haciendo que funcione de manera diferente en diferentes versiones del sistema operativo. Cuando una biblioteca compartida para un programa no está disponible en su sistema, se produce un error que puede tener este aspecto:

Sudo: error while loading shared libraries: libpthread.so.0:Cannot open shared object file: no such file or directory.

A continuación, podemos comprobar las bibliotecas compartidas de un programa en particular utilizando el comando LDD.

Instalar el comando LDD.

El comando LDD está inherentemente disponible en casi todas las distribuciones Linux. En caso de que no lo sea, puede usar el siguiente comando para instalarlo:

$ sudo apt-get install libc-bin

El comando $ ldd tiene la siguiente sintaxis:

$ ldd <options> <executable>

O más en general:

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

LDD es un comando básico pero potente. Ofrece ayuda y otras variaciones usando diferentes banderas. A continuación se describen brevemente.

ion: Para mostrar la versión ldd actualmente en uso.

-v --verbose: Para mostrar información intrincadamente.

-u --unused: Para mostrar dependencias no utilizadas.

-d --data-relocs: Para reubicar e identificar objetos perdidos.

-r --function-relocs: Para reubicar objetos y funciones de datos, así como para identificar funciones u objetos faltantes.

-help: Para proporcionar ayuda con respecto al uso de comandos.

Usando el comando LDD.

Ahora que ha completado la instalación, está listo para aprender a usar el comando LDD en Linux. Demostraremos esto junto con cómo ayuda a identificar bibliotecas compartidas.

Buscaremos en las bibliotecas compartidas de Bash, el shell estándar en Linux. Es responsable de ejecutar comandos y proporcionar una interfaz entre el usuario y el sistema operativo.

Para usar el comando LDD, siga estos pasos:

  1. Comience abriendo el Terminal de comandos presionando Ctrl + Alt + T en su teclado.
  2. A continuación, localice la ruta utilizando el comando which o whereis seguido del comando LDD escribiendo lo siguiente:
$ which bash$ whereis bash$ ldd /usr/bin/bash
Comando LDD en Linux

Como puede ver, las dependencias de la biblioteca compartida son visibles. Para obtener una visión general detallada y más compleja, utilice la bandera -v con el comando $ ldd de la siguiente manera:

$ ldd -v /usr/bin/bash
Comando LDD en Linux

De manera similar, podemos usar la bandera -u para mostrar las dependencias no utilizadas.

$ ldd -u /usr/bin/bash
-bandera u

En el caso que se muestra arriba, no hay dependencias sin usar. Siempre se recomienda controlar qué bibliotecas están inactivas y consumen memoria. Si no lo hace, puede cargar su núcleo con archivos no utilizados, lo que dificulta el rendimiento. Sería útil consultar nuestro artículo sobre cómo liberar espacio en Ubuntu.

Para las reubicaciones de datos y funciones, utilizamos las banderas -d y -r respectivamente junto con el comando $ ldd.

$ ldd -d /usr/bin/bash$ ldd -r /usr/bin/bash
Comando LDD en Linux

Estos indicadores también ayudan a identificar objetos y funciones faltantes.

Por último, pero no menos importante, podemos usar la bandera --help para una consulta rápida sobre las banderas y sus respectivas acciones.

--bandera de ayuda

Limitaciones del comando LDD.

Debe tenerse en cuenta que el comando LDD no funcionará en programas que no sean ejecutables dinámicamente, bibliotecas compartidas “a.out” o archivos que estén desactualizados o que se desarrollaron antes de que saliera el LDD.

Finalmente, se recomienda que los comandos LDD no se utilicen con fuentes no confiables, ya que pueden dar lugar a errores y excepciones bruscos.

La página de manual para LDD sugiere un comando alternativo que se compone de utilidades objdump y grep.

 ~/$objdump -p /path/program/grep NEEDED

LDD es una de esas instrucciones socavadas que, si se usa de la manera correcta, puede marcar una diferencia sustancial en su interacción con el sistema operativo. Es un poderoso comando de enlace con un propósito específico, y definitivamente cumple. Para obtener más detalles sobre el comando y su uso, puede dirigirse a la página de manual del comando LDD.

Leave a Reply