Utilisation de la commande «ldd» sous Linux

Image illustrant : Utilisation de la commande «ldd» sous Linux
  1. Accueil
  2. Tutoriels
  3. Mac
  4. Utilisation de la commande «ldd» sous Linux

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)

Linux ldd command

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)

Linux ldd command missing

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

Linux objdump ldd alternative

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

Linux whereis command

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.

Partager Tutoriel

Mots clés dans : Utilisation de la commande «ldd» sous Linux

Commande «ldd»

Autres Tutoriels sur (Commande, «ldd») ...