Tryldd binary-exec
Exemple :
~$ 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)
Pour trouver ce dont il a directement besoin :
readelf -d APP | grep NEEDED
ldd
comme mentionné ailleurs, affichera toutes les bibliothèques directes et indirectes - tout ce dont il a besoin au moment de l'exécution. Cette liste n'est peut-être pas complète, car vous pouvez ouvrir dynamiquement des éléments avec dlopen(), mais cela devrait fonctionner 99 % du temps.
ld et libtool sont utilisés au moment de la compilation/liaison. Ils ne sont plus utiles une fois que vous avez une application.
MODIFIER Je peux voir par des réponses ultérieures que vous posiez des questions sur OSX, mais je veux ajouter à ma réponse sur les outils Linux :
Une chose que j'ai oublié de mentionner, il y a pas mal de temps; vous avez demandé des versions. Ni ldd
ni readelf
répondra à la question "quelle version". Ils vous indiqueront le nom de fichier de la bibliothèque que vous recherchez, et la convention de dénomination peut contenir des informations sur la version, mais rien ne l'impose. Les symboles peuvent être versionnés, et vous auriez besoin d'un niveau encore plus bas avec nm
pour les voir,
Une autre façon serait d'utiliser objdump.
objdump -x "binaire" | grep NÉCESSAIRE
Cela montre toutes les dépendances nécessaires uniquement pour ce binaire. Très utile.