Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Un problème d'édition de liens

1 réponse
Avatar
ccellier
Bonjour.

Je n'ai jamais bien compris comment fonctionnait l'édition des liens.
J'ai un programme qui linke avec la libdb4 (options au link :
-L /usr/local/BerkeleyDB.4.3/lib/ -l db)

Ce programme fait un appel à getprotobyname, qui lui même appelle des
fonctions de la libnss_db, qui est linkée avec libdb3 :

$ ldd /usr/lib/libnss_db.so
libnss_files.so.2 => /lib/tls/libnss_files.so.2 (0xb7f4c000)
libdb3.so.3 => /usr/lib/libdb3.so.3 (0xb7ea2000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7d6c000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

L'ennuis, c'est que cette fonction de la libnss (_nss_db_getspnam_r en
l'occurence) appelle une fonction de la libdb4 et pas celles de la
libdb4, ce qui crashe le programme.

Pourtant, je pense que plusieurs version de la même lib peuvent très
bien cohabiter dans un même programme. Je dois oublier de dire
quelquechose d'important au linker, mais quoi ?

Note: L'ensemble tourne avec libtool, qui définit pas mal de LD_MACHIN,
peut être y a t-il un rapport ??)

Toute idée sera la bienvenue...

1 réponse

Avatar
Paul Gaborit
À (at) 09 Jan 2006 14:47:10 GMT,
écrivait (wrote):
[...]
Pourtant, je pense que plusieurs version de la même lib peuvent très
bien cohabiter dans un même programme. Je dois oublier de dire
quelquechose d'important au linker, mais quoi ?


Ce n'est malheureusement presque jamais le cas. Un programme ne peut
utiliser qu'une et une seule version d'une même bibliothèque.

Maintenant, je ne saurais comment vous aider pour votre problème
précis. Peut-être pourriez-vous convaincre votre programme d'utilise
db3 et non db4...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>