pb pour compiler des lib dynamiques sous linux - C++ - Programmation
Marsh Posté le 04-04-2003 à 17:12:04
Déjà il faut que tu recompiles tes fichiers c en -fPIC, en générant des .sho au lieu des .o. Ensuite, il faut utiliser ces .sho pour faire la lib, et pas le .a. Et puis n'oublie pas de mettre un SONAME, ça peut toujours servir.
Ensuite, tu fais un gcc -shared -o libxx.so.3.4 -Wl,-soname,libxx.so.3 file1.sho file2.sho ... -lmachin -lbidule
(pas oublier de lier aux libs dont tu dépends et uniquement à elles)
Marsh Posté le 07-04-2003 à 10:08:37
Jar Jar a écrit : Déjà il faut que tu recompiles tes fichiers c en -fPIC, en générant des .sho au lieu des .o. Ensuite, il faut utiliser ces .sho pour faire la lib, et pas le .a. Et puis n'oublie pas de mettre un SONAME, ça peut toujours servir. |
ok merci bcp.
Seulement, tous les makefile des libs de l'appli construisent la lib .so à partir de la lib .a. Je comprends pas comment ca peu marcher : quand je recompile, mes .so sont foireux... alors comment ils ont fait ?? Enfin pas grave, je me refaire tous les Makefile
Marsh Posté le 07-04-2003 à 22:12:30
hellbilly a écrit : Seulement, tous les makefile des libs de l'appli construisent la lib .so à partir de la lib .a. Je comprends pas comment ca peu marcher : quand je recompile, mes .so sont foireux... alors comment ils ont fait ?? Enfin pas grave, je me refaire tous les Makefile |
C'est un boulet qui a fait ça.
En fait, on trouve assez souvent des libs mal foutues, j'en ai même vu en version stable sans SONAME...
C'est pour ça qu'on a fait libtool, mais il vaut quand même vraiment mieux éviter cette bouse.
Marsh Posté le 04-04-2003 à 17:07:28
salut,
pour compiler ma lib statique je fais :
ar rc libxx.a file1.o file2.o ...
et pour l'avoir en version dynamique :
g++ -shared -o libxx.so libxx.a
Mais le pb c'est que la libxx.so ne fait que quelques octets et lors de l'edition de lien avec l'application il ne trouve pas mes fonctions. C'est quoi qui va pas ??
merci