•
Buscar depedencias de librerías compartidas con ldd
Al crear entornos con chroot (o similares como maquinas virtuales o sistemas empotrados) necesitamos que los binarios que se ejecutan enjaulados dispongan de todas sus dependencias. Mediante ldd podemos listar todas las librerias necesarias para ejecutar el binario.
Su uso no puede ser más sencillo, ejecutamos ldd con el binario que queremos que nos diga las dependencias:
$ ldd /bin/df
libc.so.6 => /lib/libc.so.6 (0x00002b2d96ae1000)
/lib64/ld-linux-x86-64.so.2 (0x00002b2d968c5000)
$ ldd /bin/bash
libncurses.so.5 => /lib/libncurses.so.5 (0x00002b30acede000)
libdl.so.2 => /lib/libdl.so.2 (0x00002b30ad13b000)
libc.so.6 => /lib/libc.so.6 (0x00002b30ad33f000)
/lib64/ld-linux-x86-64.so.2 (0x00002b30accc2000)
El problema que tendremos es que las librerías también dependen de otras librerías, por lo que tendremos que ir buscándolas hasta tenerlas todas:
# ldd /usr/local/bin/httpd
libz.so.1 => /usr/local//lib/libz.so.1 (0x00000032bae00000)
libm.so.6 => /lib64/libm.so.6 (0x00000032ba200000)
libaprutil-1.so.0 => /usr/local//lib/libaprutil-1.so.0 (0x00002b8beb5f4000)
libexpat.so.0 => /usr/local//lib/libexpat.so.0 (0x00002b8beb813000)
libapr-1.so.0 => /usr/local//lib/libapr-1.so.0 (0x00002b8beba34000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00000032ba600000)
librt.so.1 => /lib64/librt.so.1 (0x00000032bb600000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00000032bc600000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b8bebc5e000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000032b9e00000)
libc.so.6 => /lib64/libc.so.6 (0x00000032b9a00000)
/lib64/ld-linux-x86-64.so.2 (0x00002b8beb3c9000)
# ldd /usr/local//lib/libaprutil-1.so.0
libexpat.so.0 => /usr/local//lib/libexpat.so.0 (0x00002b63c1881000)
libapr-1.so.0 => /usr/local//lib/libapr-1.so.0 (0x00002b63c1aa1000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00002b63c1cd7000)
librt.so.1 => /lib64/librt.so.1 (0x00002b63c1edc000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002b63c20e5000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b63c231d000)
libdl.so.2 => /lib64/libdl.so.2 (0x00002b63c2538000)
libc.so.6 => /lib64/libc.so.6 (0x00002b63c273c000)
/lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
Relacionados
Imprimir
•
4 comments to “Buscar depedencias de librerías compartidas con ldd”
•
13. January 2009 at 9:20 am :
Pequeña errata en el título: debería poner compartidas.
Aquí tienes un pequeño script para buscar recursivamente las dependencias
13. January 2009 at 9:25 am :
Corregido el titulo! Muchas gracias
Parece que el WordPress se ha comido en enlace, puedes volverlo a postear?
saludos!
13. January 2009 at 9:37 am :
Buscar recursivamente con ldd
http://www.lysium.de/blog/index.php?/archives/35-Recursive-ldd.html
13. January 2009 at 12:33 pm :
Muchas gracias! He editado el primer post para poner el enlace