263 votes

Montrer toutes les bibliothèques utilisées par exécutables sur linux

Je voudrais savoir les bibliothèques qui sont utilisées par exécutables sur mon système. Plus précisément, je voudrais classer les bibliothèques qui sont utilisées le plus, ainsi que les fichiers binaires qui les utilisent. Comment est-ce que je peux faire cela ?

(en supposant que nous parlons seulement des bibliothèques partagées)

305voto

John Vasileff Points 1897
<ol> <li>Utilisation <code></code> pour répertorier les bibliothèques partagées pour chaque exécutable.</li> <li>Nettoyage de la sortie</li> <li>Trier, calculer des chefs d’accusation, trier en fonction du nombre</li> <p>Pour trouver la réponse pour tous les fichiers exécutables dans le répertoire « / bin » :</p><pre><code></code></pre><p>Changer « / bin » au-dessus « / » pour rechercher tous les répertoires.</p><p>Sortie (pour simplement le répertoire "/ bin") ressemblera à quelque chose comme ceci :</p><pre><code></code></pre><p>Edit - supprimé « grep -P »</p></ol>

84voto

smichak Points 1435

Je n'ai pas eu ldd sur ma chaîne d'outils ARM donc j'ai utilisé objdump:

$ (CROSS_COMPILE) objdump -p

Par exemple:

 objdump -p /usr/bin/python:

Dynamic Section:
  NEEDED               libpthread.so.0
  NEEDED               libdl.so.2
  NEEDED               libutil.so.1
  NEEDED               libssl.so.1.0.0
  NEEDED               libcrypto.so.1.0.0
  NEEDED               libz.so.1
  NEEDED               libm.so.6
  NEEDED               libc.so.6
  INIT                 0x0000000000416a98
  FINI                 0x000000000053c058
  GNU_HASH             0x0000000000400298
  STRTAB               0x000000000040c858
  SYMTAB               0x0000000000402aa8
  STRSZ                0x0000000000006cdb
  SYMENT               0x0000000000000018
  DEBUG                0x0000000000000000
  PLTGOT               0x0000000000832fe8
  PLTRELSZ             0x0000000000002688
  PLTREL               0x0000000000000007
  JMPREL               0x0000000000414410
  RELA                 0x0000000000414398
  RELASZ               0x0000000000000078
  RELAENT              0x0000000000000018
  VERNEED              0x0000000000414258
  VERNEEDNUM           0x0000000000000008
  VERSYM               0x0000000000413534
 

60voto

Fabiano Tarlao Points 116

Sous Linux, j'utilise:

 lsof -P -T -p Application_PID
 

Cela fonctionne mieux que ldd lorsque l'exécutable utilise un chargeur non par défaut

55voto

pilif Points 7172

pour apprendre ce que les bibliothèques utilisent en binaire, utilisez ldd

 ldd path/to/the/tool
 

Vous devrez écrire un petit script shell pour accéder à votre décomposition à l'échelle du système.

7voto

Raghwendra Points 31

Sous UNIX, supposez que le nom binaire (exécutable) est test. Ensuite, nous utilisons la commande suivante pour répertorier les bibliothèques utilisées dans le test est

 ldd test
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X