Comment exécuter un programme en utilisant une librairie spécifique?

Le
thomas
Bonjour à tous,

voici mon problème: le programme "foo" a besoin de "libtruc v2"
(debian/experimental) et j'ai libtruc v1 installée (debian/stable). Je
ne souhaite pas upgrader cette librairie pour ne pas mélanger des
paquets "stable" avec des paquets "experimental". Je souhaiterais
exécuter foo en utilisant non pas libtruc v1 dans /usr/lib mais la v2
qui se trouve dans un autre répertoire. Quelque chose du genre:

~$ CHEMIN_DE_LIBTRUC=/opt/foodir/libtruc.so /opt/foodir/foo

Mais je ne sais pas comment indiquer au programme foo un autre chemin
de librairie.

Merci de votre aide

Thomas
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
François Boisson
Le #18261141
Le Wed, 31 Dec 2008 14:18:40 +0100
thomas
Bonjour à tous,

voici mon problème: le programme "foo" a besoin de "libtruc v2"
(debian/experimental) et j'ai libtruc v1 installée (debian/stable). Je
ne souhaite pas upgrader cette librairie pour ne pas mélanger des
paquets "stable" avec des paquets "experimental". Je souhaiterais
exécuter foo en utilisant non pas libtruc v1 dans /usr/lib mais la v2
qui se trouve dans un autre répertoire. Quelque chose du genre:

~$ CHEMIN_DE_LIBTRUC=/opt/foodir/libtruc.so /opt/foodir/foo

Mais je ne sais pas comment indiquer au programme foo un autre chemin
de librairie.



$ LD_PRELOAD=/opt/foodir/libtruc.so /opt/foodir/foo

doit convenir..

François Boisson

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
thomas
Le #18261521
2008/12/31 François Boisson
Le Wed, 31 Dec 2008 14:18:40 +0100
thomas
Mais je ne sais pas comment indiquer au programme foo un autre chemin
de librairie.



$ LD_PRELOAD=/opt/foodir/libtruc.so /opt/foodir/foo

doit convenir..



Merci, le programme s'exécute bien! Il y a juste un petit problème:
dans le shell où j'ai exécuté cette commande, certains programmes ont
un comportement bizarre. Je pense que la version la plus récente de
libtruc (ou, pour l'appeler par son vrai nom, libglib2) reste chargée
et qu'elle met un peu le pastis. Si je lance un autre shell, pas de
problème. Donc, pour peaufiner les choses: y a-t-il un moyen de
décharger la librairie après l'exécution du programme?
Sylvain Sauvage
Le #18262361
François Boisson, mercredi 31 décembre 2008, 14:22:58 CET

Le Wed, 31 Dec 2008 14:18:40 +0100
thomas
> Bonjour à tous,



’jour,

> voici mon problème: le programme "foo" a besoin de "libtruc
> v2" (debian/experimental) et j'ai libtruc v1 installée
> (debian/stable). Je ne souhaite pas upgrader cette librairie
> pour ne pas mélanger des paquets "stable" avec des paquets
> "experimental". Je souhaiterais exécuter foo en utilisant
> non pas libtruc v1 dans /usr/lib mais la v2 qui se trouve
> dans un autre répertoire. Quelque chose du genre:
>
> ~$ CHEMIN_DE_LIBTRUC=/opt/foodir/libtruc.so /opt/foodir/foo
>
> Mais je ne sais pas comment indiquer au programme foo un
> autre chemin de librairie.

$ LD_PRELOAD=/opt/foodir/libtruc.so /opt/foodir/foo

doit convenir..



J’aurais plutôt dit :
$ LD_LIBRARY_PATH=/opt/foodir /opt/foodir/foo

LD_LIBRARY_PATH : chemin vers des bibliothèques
LD_PRELOAD : bibliothèques à charger _en plus_ des bibliothà ¨ques
liées et avant elles (donc en remplacement de certaines fonctions).

--
Sylvain Sauvage

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
thomas
Le #18262351
2008/12/31 thomas
Non, et c'est ça qui est curieux. En fait, je me suis mal exprimé: je
ne dois pas lancer un autre shell pour que tout ce remette à marcher
normalement, mais un autre terminal. Bizarre, non? Si j'exécute
"./script_de_lancement", ou même "bash ./script_de_lancement", rien à
faire, ensuite, la librairie semble chargée pour tout ce que j'exécute
dans ce terminal. (Je dois ouvrir un xterm tout neuf.)



Errata: "lsof -p $$" me montre que la librairie est bien déchargée
après l'exécution du programme. C'est donc le programme lui-même qui
doit être à l'origine du problème dans le terminal, et pas la
librairie. Un bug qui n'a rien à voir avec ma question initiale, donc.
François Boisson
Le #18262701
Le Wed, 31 Dec 2008 15:36:34 +0100
Sylvain Sauvage
$ LD_LIBRARY_PATH=/opt/foodir /opt/foodir/foo

LD_LIBRARY_PATH : chemin vers des bibliothèques
LD_PRELOAD : bibliothèques à charger _en plus_ des bibliothèques
liées et avant elles (donc en remplacement de certaines fonctions).




Oui, mais je ne sais pas si sa librairie a le même nom que l'ancienne version
ou non, LD_PRELOAD permet de «bétonner» d'où ce choix.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Publicité
Poster une réponse
Anonyme