-
Shared Library Linux
Bonjour,
J'ai généré une bibliothèque libhello.so qui contient une fonction qui affiche un message "hello world"
J'ai ensuite lié mon programme à cette bibliothèque , mais ce programme n'appelle pas cette fonction
Pour que le message "hello world" s'affiche, faut-il que ce programme appelle cette fonction ?
S'il le faut , y a t-il une autre solution qui permet cet affichage sans toucher à mon programme?
Merci
-
Je suppose que tu n'as installé ta bibliothèque dans les répertoires usuels. l'option -I (entre autre) de gcc te permet de spécifier les répertoires où le compilateur pourra trouver les bibliothèques que tu veux utiliser.
Il existe d'autres possibilités pour indiquer à gcc les différents emplacements : voir http://www.linux-kheops.com/doc/man/....1.html#sect10
-
J'ai mis cette bibliothèque dans le même répertoire que mon programme.
Pour être plus claire, mon problème est le suivant:
j'ai un programme (l'exécutable et pas la source), dans le code source il n'y a pas l'appel à la fonction hello ni en #include
J'ai procédé comme suit:
Pour générer la bibliothèque: gcc -shared -ldl -fPIC hello.c libhello.so
La liaison entre le programme et la bibliothèque: LD_PRELOAD=/home/chercheur/libhello.so ./programme
----> Pas d'affichage du message
Si c'est pas possible de faire cette liaison, est-ce qu'il y a une autre solution pour afficher le message de la fonction hello ?
Merci