sábado, 3 de febrero de 2024

Ldd y Ldconfig

Posted by q3it on sábado, febrero 03, 2024 in


Voy a enseñar que hacen los comandos ldd y ldconfig. El primero lo que hace es mostrar las dependencias y las librerías necesarias para ejecutar una aplicación. En el post anterior nos faltaba una librería para poder ejecutar vim
 
 
Nosotros podemos listar las librerías necesarias para este programa poniendo el ldd y la ruta, pero en este caso podemos utilizar la sustitución con witch y nos va a decir en qué directorio está.

 
Lo que nos arroja la consulta es, cuales son las librerías que nosotros necesitamos para ejecutarla, cuál es la ruta y donde está esa librería. En el caso de no encontrarla nos aparecerá "not found" que es lo que le pasa a nuestra aplicación.
 
Cómo ya sabemos la librería que nos falta vamos a crear un directorio en /root/lib/ que tiene la librería que nosotros necesitamos. 
 
 
Vamos a utilizar el comando ldconfig para reconfigurar la base de datos de librería, una vez configurado /etc/ld.so.conf  vamos a tener que ejecutar este comando para actualizar esta base de datos.
 
Si yo creo un fichero dentro del directorio /etc/ld.so.conf.d/prueba.conf  y le redirijo la salida de éste a la ruta donde yo tengo mi librería /root/lib/.
 
 
Hago un cat del fichero y vemos si redirigió el contenido. Si vuelvo a intentar ejecutar vim veremos que no puedo porque no he ejecutado el comando ldconfig.
 
 
Yo si ejecuto de ldconfig va a releer todos los directorios donde nosotros no lo hemos especificado y ahora si vuelvo a hacer el ldd $(which vim) vemos que ahora sí están todos las librería correctas.
 
 
Es decir yo puedo ejecutar vim, si queremos ver lo que realiza cuando nosotros ejecutamos ldconfig le añadimos -v. Si queremos que nos muestre la base de datos actual, es decir, las librerías que podemos utilizar, entonces utilizaremos la opción -p y nos limitará el contenido de la base de datos donde está todas las librerías.
 
 
Si nosotros quisiéramos especificar otro fichero de configuración en vez de por defecto /etc/ld.so.conf.d podemos utilizar la opción -f y el fichero donde están los directorios con las librerías.