Bonjour
Dans Linux, comment fait-on pour dire que notre programme devrait utiliser la version N-1 d'une bibliothèque plutôt que la version N ?
Exemple d'un lib prise au hasard :
/usr/lib/libstdc++.so.3
/usr/lib/libstdc++.so.5
/usr/lib/libstdc++.so.6
Peut-on choisir de charger et utiliser une version plutôt qu'une autre ?
Merci.
# -Wl,-soname,lib.so.Y ?
Posté par zecrazytux (site web personnel) . Évalué à 0.
[^] # Re: -Wl,-soname,lib.so.Y ?
Posté par goeb . Évalué à 1.
g++ t.c -Ltmp -Wl,-soname,libA.so.1 -lA
Et la dépendance par rapport à la lib A est (vu avec ldd) :
libA.so => /home/user/tmp/libA.so
La spécification de A.so.1 n'a pas l'air d'avoir été prise en compte.
Sachant que tmp contient :
libA.so -> libA.so.2*
libA.so.1*
libA.so.2*
ps : je ne sais pas comment avoir des flèches valables dans mon post (->)...
[^] # Re: -Wl,-soname,lib.so.Y ?
Posté par Benoît Monin . Évalué à 4.
Pour forcer l'utilisation d'une version particulière de bibliothèque, il suffit de la lier directement avec le chemin complet.
Par exemple avec sizeof.c disponible ici [http://www.pccl.demon.co.uk/C/sizeof.c], si je compile comme ca :
gcc sizeof.c -o sizeof -lncurses
sizeof dépend de libncurses.so.5
Alors que si je compile comme ça :
gcc sizeof.c -o sizeof -Wl,/lib64/libncurses.so.6
sizeof dépend libncurses.so.6
[^] # Re: -Wl,-soname,lib.so.Y ?
Posté par goeb . Évalué à 2.
# Tout simplement
Posté par podoc . Évalué à 3.
Tout simplement en lui passant le nom complet de la lib au moment du link.
ldd -L/usr/lib -llibstdc++.so.5
Ou si tu compiles et link en même temps
gcc masource.cpp -omonpgm -L/usr/lib -llibstdc++.so.5
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.