GNU/Linux >> Tutoriels Linux >  >> Linux

Trouver les bibliothèques auxquelles un binaire était lié

Tryldd binary-exec

Exemple :

~$ ldd /bin/bash
    linux-gate.so.1 =>  (0x00606000)
    libncurses.so.5 => /lib/libncurses.so.5 (0x00943000)
    libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00c5d000)
    libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x003e9000)
    /lib/ld-linux.so.2 (0x00a41000)

Pour trouver ce dont il a directement besoin :

readelf -d APP | grep NEEDED

ldd comme mentionné ailleurs, affichera toutes les bibliothèques directes et indirectes - tout ce dont il a besoin au moment de l'exécution. Cette liste n'est peut-être pas complète, car vous pouvez ouvrir dynamiquement des éléments avec dlopen(), mais cela devrait fonctionner 99 % du temps.

ld et libtool sont utilisés au moment de la compilation/liaison. Ils ne sont plus utiles une fois que vous avez une application.

MODIFIER Je peux voir par des réponses ultérieures que vous posiez des questions sur OSX, mais je veux ajouter à ma réponse sur les outils Linux :

Une chose que j'ai oublié de mentionner, il y a pas mal de temps; vous avez demandé des versions. Ni ldd ni readelf répondra à la question "quelle version". Ils vous indiqueront le nom de fichier de la bibliothèque que vous recherchez, et la convention de dénomination peut contenir des informations sur la version, mais rien ne l'impose. Les symboles peuvent être versionnés, et vous auriez besoin d'un niveau encore plus bas avec nm pour les voir,


Une autre façon serait d'utiliser objdump.

objdump -x "binaire" | grep NÉCESSAIRE

Cela montre toutes les dépendances nécessaires uniquement pour ce binaire. Très utile.


Linux
  1. Patcher un binaire avec Dd ?

  2. Bibliothèques graphiques Linux 3D ?

  3. Linux - Ldd ne trouve pas de chemin, comment ajouter ?

  4. Comment trouver quand le Spfile a été créé sur le serveur Linux

  5. Compatibilité binaire de la distribution Linux

L'histoire Linux de ma famille

Mes 3 versions Linux préférées

5 façons de trouver une description et un emplacement de "commande binaire" sur le système de fichiers

Les DLL (liées statiquement) utilisent-elles un tas différent de celui du programme principal ?

Comment savoir quel fichier se trouve sur un secteur particulier

Comment tester si un binaire Linux a été compilé en tant que code indépendant de la position ?