Forum Linux.général comment choisir de linker avec une version de shared lib

Posté par  .
Étiquettes : aucune
0
7
oct.
2009
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  (site web personnel) . Évalué à 0.

    ça irait pas ?
    • [^] # Re: -Wl,-soname,lib.so.Y ?

      Posté par  . Évalué à 1.

      ça n'a pas l'air de bien marcher. Je fais ceci :


      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  . Évalué à 4.

      L'option -soname c'est pour forcer le champ SONAME quand tu compiles une bibliothèque et c'est ce champ que tu retrouves en faisant un ldd sur un exécutable.

      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
  • # Tout simplement

    Posté par  . Évalué à 3.

    Bonjour,
    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.