Preparación para el examen LPI 101

Tema 102.4
Administrando librerías compartidas

Créditos y licencia de uso

Coordinación:

Manuel Guillán (xLekOx) lpi@xlekox.org

Traducción:

Manuel Guillán (xLekOx) lpi@xlekox.org

Maquetación:

Manuel Guillán (xLekOx) lpi@xlekox.org

Javier Pulido (jpulido) javier.pulido@wanadoo.es

Versión 1.0 (17-09-2004 0:30)

Distribuido por FreeUOC (www.freeuoc.org) bajo licencia: Attribution-NonCommercial-ShareAlike2.0 de commons creative

http://creativecommons.org/licenses/by-nc-sa/2.0/

ÍNDICE

Índice de contenido

Tema 102.4
Administrando librerías compartidas	1

Créditos y licencia de uso	2

ÍNDICE	3

Introducción	4

Administrando librerías compartidas	5

Viendo las librerías compartidas necesarias	5

Administrando los paths de las librerías	6

Configurando librerías compartidas	6

Preguntas TEST	7

Respuestas TEST	8

Bibliografia y enlaces recomendados	9

Introducción

En este capítulo se verán las librerías compartidas de las que dependen los programas, así como su instalación cuando sean necesarias.

Los comandos que se verán en este tema son:

ldd

ldconfig

Se verá la configuración del fichero:

/etc/ld.so.conf

... y el LD_LIBRARY_PATH

Este tema tiene un peso (importancia) de 3 de cara al examen final de la certificación LPI 101. El total de la suma de pesos de todos los temas es de 106.

Administrando librerías compartidas

Cuando se escribe el código fuente de los programas, los programadores no re-escriben código de operaciones básicas. Estas operaciones son escritas una vez y reusadas muchas veces por otros programadores, facilitando de este modo la reutilización de código y el ahorro de tiempo/esfuerzo. Estas operaciones rutinarias se guardan en lo que se conocen como librerías compartidas (shared libraries). Para que una aplicación que emplea estas librerías se pueda compilar e instalar, es necesario el acceso a las mismas. Algunos programas incluyen en el ejecutable final estas librerías, por lo que al usarlo no será necesario disponer de las mismas, estos programas responden al nombre de aplicaciones compiladas estáticamente. Sin embargo otros programas enlazan con las librerías en tiempo de compilación, son los programas compilados dinámicamente.

Las aplicaciones estáticas pueden parecer más ventajosas, sin embargo, la inclusión de la librerías hace que el programa sea mayor de lo que sería si fuese compilado dinámicamente. Las librerías compartidas en GNU/Linux normalmente se guardan en diversas carpetas, algunas de las más comunes:

/lib -> librerías principales

/usr/lib -> librerías supletorias

/usr/X11R6/lib -> librerías de las X-window

Las librerías compartidas normalmente emplean un nombre estandarizado:

nombrelibreria-major-minor-patch.so

La extensión .so se refiere a “shared objet” (Objeto compartido). Por ejemplo: libcrypt-2-1-3.so hace referencia a la librería libcrypt, en su versión 2.1 y el patch 3.

En muchos casos los links simbólicos se crean para las librerías, estos se nombran de la siguiente manera: nombre.so , o bien, nombre.so.major

Ejemplos: libcrypt.so ó libcrypt.so.2

Estos enlaces permiten a los programas enlazar con estas librerías independientemente de la versión (menor) y el parche actual.

Viendo las librerías compartidas necesarias

Si se quieren ver las librerías que usa un programa, basta con introducir el comando:

$ldd fichero

Por ejemplo, para ver las librerías que usa el comando wget:

$ldd wget

linux-gate.so.1 => (0xffffe000)

libssl.so.0.9.7 => /usr/lib/libssl.so.0.9.7 (0x40038000)

libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0x40067000)

libdl.so.2 => /lib/libdl.so.2 (0x4015b000)

libc.so.6 => /lib/libc.so.6 (0x4015e000)

/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Esto significa que usa las librerías linux-gate (v1), libssl(v0.9.7), libcrypto(v.0.9.7), libdl(v2), libc(v6) y ld-linux(v2)

Administrando los paths de las librerías

Si una aplicación no puede encontrar una librearía compartida que necesite, dará un error y finalizará su ejecución. Si la librería no está en el path predefinido, se puede añadir a la variable de entorno LD_LIBRARY_PATH de la siguiente manera:

export LD_LIBRARY_PATH=/usr/nuevopath

De este modo se añadirá /usr/nuevopath al path y hará que el programa que anteriormente daba error se ejecute normalmente.

Configurando librerías compartidas

Si una librería compartida se instala manualmente, se debe informar al sistema de la existencia de la nueva librería. La configuración se guarda en el fichero /etc/ld.so.conf que contiene un listado de directorios donde se encuentran las diferentes librerías compartidas. Por ejemplo:

/usr/lib

/usr/X11R6/lib/Xaw3d

/usr/X11R6/lib

Notar que no existe el directorio /lib, este es incluido por defecto ya que las librerías requeridas por el sistema se encuentran ahí. Para mejorar el rendimiento se crea un fichero caché (/etc/ld.so.cache), el cual contiene todas las librerías de estos directorios. Cuando el fichero de configuración se cambia, el fichero caché debe de ser actualizado, esto se hace con el comando ldconfig.

Preguntas TEST

Que comando se usa para generar el fichero /etc/ld.so.cache?

A. ldcache
B. ldupdate
C. ldconf
D. ldconfig

Que método de compilado crea ejecutables de menor tamaño ?

A. dinámico
B. unlinked
C. varible
D. estático

Respuestas TEST

D

A

Bibliografia y enlaces recomendados

LPIC 1 Certification Bible (Bible) by Angie Nash, Jason Nash

John Wiley & Sons; Bk&CD-Rom edition (July 1, 2001) ISBN: 0764547720
LPI Linux Certification in a Nutshell by Jeffrey Dean
O'Reilly & Associates; 1st ed edition (May 15, 2001) ISBN: 1565927486
CramSession's LPI General Linux Part 1 : Certification Study Guide
CramSession.com; ISBN: B000079Y0V; (August 17, 2000)

Referencias Unix Reviews

http://www.unixreview.com/documents/s=7459/uni1038932969999/

Página LPI: www.lpi.org

Apuntes IBM: http://www-106.ibm.com/developerworks/edu/l-dw-linux-lpir21-i.html

Manuales GPL: http://www.nongnu.org/lpi-manuals/

Tema 102.4 Administrando librerías compartidas

Página 8 de 9

Tema 102.4 LPI

2004-07-21T14:39:00