Utilisez le ldd commande pour afficher les bibliothèques partagées requises par un programme donné - utile pour résoudre les problèmes de dépendance. La commande répertorie également les fonctions et les objets manquants.
Syntaxe de la commande ldd
Observez la syntaxe appropriée de la commande ldd pour éviter les erreurs:
ldd OPTION … FILE …
Utilisez un ou plusieurs des commutateurs de commande ldd disponibles, insérés dans le OPTION place dans la commande ci-dessus: --help | affiche cette aide et quitte --version | affiche les informations de version et quitte -d, --data-relocs | processus de transfert de données -r, --function-relocs | données de processus et délocalisations de fonctions -u, --unused | imprimer les dépendances directes non utilisées -v, --verbose | imprimer toutes les informations 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 des bibliothèques partagées, comme ceci: $ ldd 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
Le résultat est similaire à celui-ci: linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => not foundlibc.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 approuvé, car il est possible que ldd l'exécute. Au lieu de cela, utilisez une alternative plus sûre qui montre uniquement les dépendances directes et non l’arbre de dépendance complet: $ objdump -p / chemin / à / programme | GREP BESOIN Vous devez fournir le chemin d'accès complet à une application si vous souhaitez trouver ses dépendances avec ldd, ce que vous pouvez effectuer de plusieurs manières. Par exemple, voici comment trouver le chemin d'accès à Firefox: $ find / -name firefox
Le problème avec la commande find, cependant, est qu’elle ne listera pas seulement l’exécutable mais partout où se trouve Firefox, comme ceci: Cette approche est un peu exagérée et vous devrez peut-être utiliser la commande sudo pour élever vos privilèges. Sinon, vous obtiendrez probablement de nombreuses erreurs sans autorisation. Au lieu de cela, il est beaucoup plus facile d'utiliser la commande whereis pour trouver le chemin d'une application: $ where est firefox
Cette fois, la sortie pourrait ressembler à ceci: / usr / bin / firefox / etc / firefox / usr / lib / firefox Tout ce que vous avez à faire pour trouver les bibliothèques partagées pour Firefox est de taper 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 sera chargée en mémoire. Vous remarquerez sur beaucoup d'autres lignes que le symbole => est suivi d'un chemin. C'est le chemin vers le binaire physique; le numéro hexadécimal est l'adresse où la bibliothèque sera chargée. Comment utiliser la commande ldd
Comment trouver le chemin d'accès à une application