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

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

5 réponses
Avatar
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

5 réponses

Avatar
François Boisson
Le Wed, 31 Dec 2008 14:18:40 +0100
thomas a écrit:

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
Avatar
thomas
2008/12/31 François Boisson :
Le Wed, 31 Dec 2008 14:18:40 +0100
thomas a écrit:
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?
Avatar
Sylvain Sauvage
François Boisson, mercredi 31 décembre 2008, 14:22:58 CET

Le Wed, 31 Dec 2008 14:18:40 +0100
thomas a écrit:

> 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
Avatar
thomas
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.
Avatar
François Boisson
Le Wed, 31 Dec 2008 15:36:34 +0100
Sylvain Sauvage a écrit:

$ 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