2010-07-29 2 views
3
binaire ELF

j'ai une bibliothèque partagée avec soname: libfoo.soLinux: Comment modifier le nom de la bibliothèque partagée dans dynamique Section d'un

Comment lier mon binaire à libfoo.so tel que le nom de la bibliothèque partagée dans mes années binaires La section ELF est: libfoo5.so?

moi avons essayé de créer un lien symbolique: libfoo5.so -> libfoo.so, puis relier ma bibliothèque en tant que tel:

g++ ... -o mybinary *.o -Lpath -lfoo5

Cependant, lorsque j'imprime la section dynamique dans mon binaire ELF, il lit:

readelf -d mybinary

-je encore:

Shared library: [libfoo.so]

+0

bien pourrait être dépendant de la plate-forme bien. J'essaye sur un compilateur croisé d'ARM. Je vois que l'éditeur de liens ne suit pas les liens symboliques. readelf -d me donne le libfoo5.so comme une dépendance et pas libfoo.so – suppie

Répondre

1

Vous le faites généralement lors de la construction de la bibliothèque partagée. Il existe une option d'éditeur de liens appelée "soname" qui le définit.

Je ne sais pas si vous pouvez le modifier après la construction, mais si c'est possible, il est probablement inclus dans le paquet appelé "elfutils". Ce paquet contient plusieurs programmes conçus pour manipuler les fichiers objet ELF.

1

Le fichier libfoo5.so est probablement un symlink à libfoo.so ou quelque chose de ce genre. Que dit ldd à propos de votre binaire?

+0

libfoo5.so est un lien symbolique vers libfoo.so ldd rapport mybinary dépend de libfoo.so – zer0stimulus

+0

Alors, est-ce que cela efface la confusion? –

+0

Je pensais que l'éditeur de liens de compilation ne suivait pas les liens symboliques et associerait le binaire avec libfoo5 – zer0stimulus

Questions connexes