Si vous ne faites pas confiance à l'exécutable, utilisez readelf -d
à la place. A partir de la page man ldd
:
Dans le cas habituel, ldd invoque l'éditeur de liens dynamique standard (voir ld.so (8)) avec la variable d'environnement LD_TRACE_LOADED_OBJECTS mis à 1, ce qui provoque l'éditeur de liens pour afficher la bibliothèque dépendances. Sachez cependant que dans certaines circonstances, certaines versions de ldd peuvent tenter d'obtenir les informations de dépendance en exécutant directement le programme. Ainsi, n'utilisez jamais ldd sur un exécutable non fiable, car cela peut entraîner l'exécution de code arbitraire.
Exemple:
readelf -d /bin/ls | grep 'NEEDED'
Exemple ouptut:
0x0000000000000001 (NEEDED) Shared library: [libselinux.so.1]
0x0000000000000001 (NEEDED) Shared library: [libacl.so.1]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
Notez que les bibliothèques peuvent dépendre d'autres bibliothèques, vous devez alors:
$ locate libselinux.so.1
/lib/i386-linux-gnu/libselinux.so.1
/lib/x86_64-linux-gnu/libselinux.so.1
/mnt/debootstrap/lib/x86_64-linux-gnu/libselinux.so.1
Choisissez l'un, et répéter:
readelf -d /lib/x86_64-linux-gnu/libselinux.so.1 | grep 'NEEDED'
Exemple de sortie:
0x0000000000000001 (NEEDED) Shared library: [libpcre.so.3]
0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x0000000000000001 (NEEDED) Shared library: [ld-linux-x86-64.so.2]
Et ainsi de suite.
Voir aussi:
double possible de [Afficher toutes les bibliothèques utilisées par executables sur linux] (http://stackoverflow.com/questions/50159/show-all-libraries-used-by-executables-on-linux) –