IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Cherche outil pour lister les dépendances d'un binaire


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut Cherche outil pour lister les dépendances d'un binaire
    Bonsoir,

    (pas sûr d'être dans le meilleur sous-forum, mais bon...)

    Tout est dans le titre : je suis à la recherche de l'outil parfait qui pourra me lister les dépendances d'un binaire (si tant est que ça existe), histoire d'essayer de passer la muraille incontournable du message Can't call the linker, switching to external linking puis arrêt sur ce message, lors de la compilation des sources de Lazarus, suite à mise en place d'un outil SVN pour màj + ou - automatiques (semble mal barré...)

    Sous Windows il y a (avait ?) "depends.exe", pour ceux qui connaissent ; existe-t-il la même chose au pays des pingouins ?

    D'avance, merci,

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    tu as ldd qui permet de lister les bibliothèques partagées requises par le binaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ ldd /bin/bash 
            linux-gate.so.1 =>  (0xb77a7000)
            libtinfo.so.5 => /lib/i386-linux-gnu/libtinfo.so.5 (0xb776f000)
            libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb776a000)
            libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75bf000)
            /lib/ld-linux.so.2 (0xb77a8000)
    de là, on doit pouvoir remonter aux packages qui les fournit (en admettant qu'ils sont déjà installés) avec une bidouille du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ ldd /bin/bash | perl -lane 'print $1 if /(\/[^ ]+)/' | xargs dpkg -S | cut -d':' -f1 | sort -u | xargs
    libc6 libtinfo5

  3. #3
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Un grand grand merci, hombre !

    À partir de là, je complète avec dpkg-query -L 'nom_de_la_lib' et ça me liste tous les fichiers de la lib, du coup, avec ton exemple je peux vérifier ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    paquet libtinfo5 contient (entre autres) :
    /lib/i386-linux-gnu/libtinfo.so.5
     
    paquet libc6 contient (entre autres) :
    /lib/i386-linux-gnu/libdl.so.2
    /lib/i386-linux-gnu/libc.so.6
    /lib/ld-linux.so.2
    Une dernière question :
    Citation Envoyé par BufferBob Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ ldd /bin/bash 
            linux-gate.so.1 =>  (0xb77a7000)
            libtinfo.so.5 => /lib/i386-linux-gnu/libtinfo.so.5 (0xb776f000)
            libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb776a000)
            libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75bf000)
            /lib/ld-linux.so.2 (0xb77a8000)
    D'où sort ce linux-gate.so.1 dont dpkg-query -l 'linux-gate' me dit qu'aucun paquet ne correspond à linux-gate mais dont l'absence n'empêche pas bash de fonctionner

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 264
    Par défaut
    "linux-gate" fait partie du format ELF, je ne me rappeles plus le détail du processus. C'est donc plutôt un point d'entrée. Ce n'est pas un fichier réel, mais c'est présent dans tous les fichiers ELF. tu remarquera par ailleurs que la commande ldd donne les chemins d'accès des bibliothèques partagées, sauf pour linux-gate.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    hola,

    Citation Envoyé par Jipété Voir le message
    D'où sort ce linux-gate.so.1 dont dpkg-query -l 'linux-gate' me dit qu'aucun paquet ne correspond à linux-gate mais dont l'absence n'empêche pas bash de fonctionner
    c'est pas un vrai fichier, c'est un objet partagé du kernel (VDSO), il est présent (mappé) dans tous les programmes, classiquement (quand ASLR est désactivé) c'est la zone mémoire mappée sur 0xc0000000-0xffffffff
    du coup il n'est pas vraiment absent, c'est même le contraire il est présent partout de manière automatique ^^


  6. #6
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Merci les copains,

    Bonne journée, bonne semaine,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Outil pour lister les objets de base
    Par kouillo dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 24/10/2011, 10h55
  2. Réponses: 2
    Dernier message: 24/09/2010, 10h34
  3. Réponses: 0
    Dernier message: 15/09/2009, 14h46
  4. Outil pour voir les dépendances (cycliques) ?
    Par oodini dans le forum C++
    Réponses: 7
    Dernier message: 09/03/2009, 11h28
  5. Un outil pour evaluer les dépendances
    Par karbone dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 30/03/2004, 14h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo