2017-02-21 3 views
1

Je dois faire en sorte que le fichier ELF utilise des chemins absolus pour les bibliothèques au lieu de chercher dans les chemins par défaut (RPATH).Chemin absolu de bibliothèque partagée dans le fichier ELF

Ce résultat est de readelf:

readelf -d example 

Dynamic section at offset 0xe28 contains 24 entries: 
Tag  Type       Name/Value 
0x0000000000000001 (NEEDED)    Shared library: [libc.so.6] 

Mais je veux obtenir quelque chose comme ceci:

readelf -d example 

Dynamic section at offset 0xe28 contains 24 entries: 
Tag  Type       Name/Value 
0x0000000000000001 (NEEDED)    Shared library: [/lib/libc.so.6] 

Existe-t-il des options de l'éditeur de liens pour y parvenir?

+0

Copie possible de [Quelle est la différence entre ldd et objdump?] (Http://stackoverflow.com/questions/11524820/what-is-the-difference-between-ldd-and-objdump) – yugr

Répondre

-1

L'outil que vous souhaitez est ldd, car ces chemins absolus ne font pas partie du fichier ELF mais sont décidés par le chargeur dynamique. ldd est un wrapper autour des variables d'environnement qui amène le chargeur dynamique à sortir les chemins vers les bibliothèques qui seraient (ou auraient été, selon la façon dont vous le voyez) chargées.

Bien sûr, la résolution de bibliothèque est une tâche spécifique au système et vos résultats peuvent varier d'une installation à l'autre, même dans la même distribution.

+0

Vous voudrez peut-être pour fournir une justification de cela? DT_NEEDED est utilisé pour fournir une indication au chargeur de l'endroit où trouver les bibliothèques - clairement par la sortie lue ci-dessus, le fichier n'a pas de chemin absolu, il a littéralement la chaîne "libc.so.6" - c'est le chargeur dynamique le charger. Ce n'est pas comme si je n'avais pas écrit sur ELF pendant 10 ans ... https://blog.flameeyes.eu/tags/elf/ –

+0

Je pense que l'OP demande s'il est possible de stocker réellement un chemin absolu dans 'DT_NEEDED' . –

+0

Ce n'est pas comme ça que j'ai lu la question. Peut-être que j'ai mal lu. Notez que mon commentaire était en réponse à quelqu'un qui m'a dit de ne pas savoir où ce commentaire est allé. –