Lathack

Librerías en Linux

linux libraries debian red hat

Introducción

Cuando hablamos de librerías en Linux, nos referimos a un archivo que contiene uno o varios programas llamados funciones.

Cuando un programa es compilado (pasado de código fuente a código binario o máquina) bajo Linux, muchas de las funciones que se necesitan provienen de otras funciones ya existentes como las de manejo de disco, memoria, entre otras. Por esta razón, no se van a compilar nuevamente puesto que ya están instaladas. Debido a esto, los programas necesitan compartir librerías.

Para evitar problemas relacionados con la memoria, estos programas apuntan a las librerías que necesitan, estando así, enlazados de forma dinámica. Si un programa detecta que no puede acceder a dichas librerías, lo más probable es que falle en su ejecución, teniendo que cumplir primero con este requerimiento para poder seguir su correcto funcionamiento.

Ubicación

Las librerías suelen estar compartidas y encontrarse en los siguientes directorios:

/lib

/libx32 (librerías de arquitectura 32 bits)

/lib64 (librerías para arquitectura amd64 en distribuciones estilo Red Hat)

/usr/lib

/usr/lib64 (librerías para arquitectura amd64 en distribuciones estilo Red Hat)

/usr/lib/x86_64-linux o /usr/libx64 (librerías para arquitectura amd64 para distribuciones basadas en Debian)

/usr/lib/i386-linux o /usr/libx32 (librerías para arquitectura 32 bits para distribuciones basadas en Debian)

El enlazador dinámico es la herramienta que busca las librerías de acuerdo a las opciones que se usaron para compilar un programa.

Uno de los primeros lugares que buscará dicho enlazador está determinado por la variable LD_LIBRARY_PATH. Generalmente no suele asignarse algún valor a esa variable, ya que es preferible que utilice las librerías predeterminadas. Solamente cuando se está desarrollando una aplicación tendría sentido declararla, por ejemplo:

# export LD_LIBRARY_PATH=/home/usuario-1/mylibs

Además, puede buscar en directorios adicionales determinado por el archivo /etc/ld.so.conf. Podemos ver el contenido de ese archivo así:

# cat /etc/ld.so.conf

include ld.so.conf.d/*.conf

El contenido nos informa que leerá los archivos que terminen con .conf en el directorio /etc/ld.so.conf.d

Por ejemplo:

# cat /etc/ld.so.conf.d/*.conf

/usr/lib64//bind9-export/

/usr/lib64/qt5-qtwebengine-freeworld

Administración y dependencias

Con el comando ldd podemos ver las librerías compartidas que requiere el programa. Dicho comando, devuelve el nombre de la librería y dónde se supone que debe estar.

Veamos un ejemplo:

Como podemos ver cada librería tiene un apuntador hacia otra, cuya función es su ejecución desde los binarios del directorio /usr. Dicha tarea es realizada por el enlazador dinámico. Cuando se instala una librería en Linux, es necesario actualizar esos enlaces para que los programas dependientes puedan funcionar bien.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

14 − uno =

Lathack
Scroll al inicio