pb pour compiler des lib dynamiques sous linux

pb pour compiler des lib dynamiques sous linux - C++ - Programmation

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

Reply

Marsh Posté le 04-04-2003 à 17:07:28   

Reply

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)


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

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.
 
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)


 
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  :cry:  

Reply

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  :cry:

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.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed