Trouvez les bibliothèques de logiciels que vos programmes utilisent
Utilisez la commande ldd pour afficher les bibliothèques partagées requises par un programme donné. La commande ldd est utile pour déterminer s'il manque une dépendance. La commande répertorie également les fonctions et objets manquants.
Syntaxe de la commande ldd
Respectez la syntaxe appropriée de la commande ldd pour éviter les erreurs :
ldd [OPTION]... FICHIER...
Utilisez un ou plusieurs des commutateurs de commande ldd disponibles, insérés dans l'emplacement [OPTION] dans la commande ci-dessus :
- --help : imprime cette aide et quitte.
- --version : affiche les informations sur la version et quitte.
- -d, --data-relocs : Traiter les déplacements de données.
- -r, --function-relocs : Traiter les relocalisations de données et de fonctions.
- -u, --unused : affiche les dépendances directes inutilisées.
- -v, --verbose : affiche toutes les informations.
Comment utiliser la commande ldd
Exécutez la commande suivante pour obtenir plus d'informations sur un programme :
ldd -v /chemin/vers/programme/exécutable
La sortie affiche les informations de version ainsi que les chemins et adresses vers les bibliothèques partagées, comme ceci :
libshared.so
linux-vdso.so.1 => (0x00007fff26ac8000)
libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)
Si le fichier SO n'existe pas du tout, vous pouvez trouver les bibliothèques manquantes à l'aide de la commande suivante :
ldd -d chemin/vers/programme
La sortie est similaire à la suivante :
linux-vdso.so.1 (0x00007ffc2936b000)
/home/gary/demo/garylib.so => ââpas trouvélibc.so.6 => usr/lib/libc.so.6 (0x00007fd0c6259000)
/lib64/ld-linux-x86 -64.so.2 (0x00007fd0c65fd000)
N'exécutez jamais la commande ldd sur un programme non fiable car la commande ldd pourrait l'exécuter. Au lieu de cela, utilisez une alternative plus sûre qui affiche uniquement les dépendances directes et non l'ensemble de l'arborescence des dépendances :
objdump -p /chemin/vers/programme | grep NÉCESSAIRE
Comment trouver le chemin d'accès à une application
Vous devez fournir le chemin complet d'une application si vous souhaitez trouver ses dépendances avec ldd, ce que vous pouvez faire de plusieurs manières.
Par exemple, voici comment trouver le chemin d'accès à Firefox :
trouver / -nom firefox
Le problème avec la commande find , cependant, est qu'elle répertorie l'exécutable et partout où se trouve Firefox, comme ceci :
/etc/skel/.mozilla/firefox
/home//cache/mozilla/firefox
/home//.mozilla/firefox
/usr/bin/Firefox
/usr/lib/Firefox
/usr/lib/Firefox/Firefox
Cette approche est un peu exagérée et vous devrez peut-être utiliser la commande sudo pour élever vos privilèges, sinon vous risquez d'obtenir des erreurs man permission-denied.
Il est plutôt plus simple d'utiliser la commande whereis pour trouver le chemin d'une application :
où est firefox
Cette fois, la sortie pourrait ressembler à ceci :
/usr/bin/firefox
/etc/firefox
/usr/lib/firefox
Ensuite, pour trouver les bibliothèques partagées pour Firefox, saisissez la commande suivante :
ldd /usr/bin/firefox
La sortie de la commande ressemblera à ceci :
linux-vdso.so.1 (0x00007ffff8364000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007feb9917a000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007feb98f76000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007feb98bf4000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007feb988f6000)
libgcc_s.so.1 => /usr/ lib/libgcc_s.so.1 (0x00007feb986e0000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007feb9833c000)
/lib64/ld-linux-x86-64.so.2 (0x00007feb99397000)
Linux-vdso.so.1 est le nom de la bibliothèque et le nombre hexadécimal est l'adresse où la bibliothèque est chargée en mémoire.
Sur de nombreuses lignes, le symbole => est suivi d'un chemin. C'est le chemin vers le binaire physique. Le nombre hexadécimal est l'adresse où la bibliothèque est chargée.