Bonjour,
après avoir lu de nombreuses discussions très intéressantes sur le linkage sous G++, je n'ai malheureusement pas trouvé la réponse à ma question. En fait celle-ci se rapproche de mon dernier post qui concernait minGW et que je croyais lié à Windows mais ca n'est pas le cas... Voici un petit résumé :
Soient 2 environnements de dev :
-Mac OS X 10.6, GCC 4.2, make, libboost compilé en statique par mes soins, liba.a et libb.a compilées sous Mac OS
-Ubuntu 10, GCC 4.3, make, libboost compilé par mes soins, liba.a et libb.a compilées sous Ubuntu
Dans l'état actuel des choses tout se compile parfaitement sur les 2 environnements. La librairie a est compilée et la librairie b aussi.
Sous MacOS, le linkage s'effectue sans aucun problème en statique sans que j'ai besoin de faire quoi que ce soit (pas d'option de linkage). Je précise que j'ai vérifié gcc -v et il n'y a pas l'option --enable-shared (sous mac le linkage se fait différemment).
Sous Ubuntu, le linkage plante... ce qui s'appelle planter ! Il ne semble trouver aucune de mes librairies (ni boost, ni a, ni b). Je n'ai que des undefined reference... Pourtant j'ai bien précisé les chemins en -L, d'ailleurs si je metsil plante en me disant qu'il ne trouve pas libf...
Code : Sélectionner tout - Visualiser dans une fenêtre à part -lf
J'ai même ajoutépour le forcer à linker avec les librairies statiques... Et rien à faire... Il ne linke que dalle !
Code : Sélectionner tout - Visualiser dans une fenêtre à part -Wl -static
Petite précision, si je décompose mon projet :
programme principal : o.out
librairies : liba.a, libb.a, libboost_xxx-mt-(s)d.a
avec liba.a utilise des symboles de libb.a
Si j'utilise uniquement liba avec mon programme ca compile, ca linke et ca s'exécute parfaitement.
Si j'utilise libb avec mon programme, ca compile, ca ne linke pas (j'ai beau linker liba aussi).
Si je parle de libboost c'est juste pour préciser que le linkage échoue avec toutes les librairies, pas seulement les miennes et qu'il y en a d'autres (pion, crypto, pcap...) avec lesquelles ca échoue dans le même linkage.
Si quelqu'un voulait bien me donner l'astuce qui tue, je pense que ca pourrait être mis dans la FAQ pour aider les gens qui compilent sur plusieurs OS...
Merci à vous !
Partager