systemadmin.es > Utilidades > Buscar depedencias de librerías compartidas con ldd

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)

4 comments to “Buscar depedencias de librerías compartidas con ldd”

  1. Pequeña errata en el título: debería poner compartidas.

    Aquí tienes un pequeño script para buscar recursivamente las dependencias

  2. Corregido el titulo! Muchas gracias

    Parece que el WordPress se ha comido en enlace, puedes volverlo a postear?

    saludos!

  3. Buscar recursivamente con ldd

    http://www.lysium.de/blog/index.php?/archives/35-Recursive-ldd.html

  4. Muchas gracias! He editado el primer post para poner el enlace

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>