Tryldd binary-exec
Ejemplo:
~$ ldd /bin/bash
linux-gate.so.1 => (0x00606000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00943000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00c5d000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x003e9000)
/lib/ld-linux.so.2 (0x00a41000)
Para encontrar lo que necesita directamente:
readelf -d APP | grep NEEDED
ldd
como se mencionó en otra parte, mostrará todas las bibliotecas directas e indirectas, todo lo que necesita en tiempo de ejecución. Puede que esta no sea una lista completa, ya que puede abrir cosas dinámicamente con dlopen(), pero debería funcionar el 99 % del tiempo.
ld y libtool se usan en tiempo de compilación/enlace. No son útiles una vez que tienes una aplicación.
EDITAR Puedo ver por respuestas posteriores que estabas preguntando sobre OSX, pero quiero agregar a mi respuesta sobre las herramientas de Linux:
Una cosa que olvidé mencionar, hace bastante tiempo; usted preguntó acerca de las versiones. Ninguno ldd
ni readelf
responderá a la pregunta "qué versión". Le dirán el nombre de archivo de la biblioteca que está buscando, y la convención de nomenclatura puede tener alguna información de versión, pero nada lo impone. Los símbolos pueden estar versionados, y tendrías que esforzarte mucho en un nivel aún más bajo con nm
para ver estos,
Otra forma sería usar objdump.
objdump -x "binario" | grep NECESARIO
Esto muestra todas las dependencias necesarias solo para este binario. Muy útil.