68Fermer70
Kevin KoflerLe 07/02/2009 à 15:03
Ce n'est sans doute pas ce que tu veux entendre, mais à mon avis le bogue est dans la lib TOTOio_dbl, elle est censée être linkée avec /opt/intel/fce/10.1.008/lib/libsvml.a et ne l'est pas. (Ils linkent probablement directement avec ld au lieu de passer par ifort.)

Ça a dû marcher à un moment (sans doute avec une ancienne version de ifort) parce que le symbole n'était pas caché, mais depuis que le symbole est caché, il faut impérativement linker la lib partout où elle est utilisée.

Pour un symbole X non caché, si le programme principal linke libA.so qui référence X et libB.a qui définit X, la référence de la libA pointera sur le symbole de la libB linkée dans le programme principal. Mais soit maintenant un symbole Y caché dans libB.a. Dans ce cas, le symbole n'est visible que dans le programme principal et dans la libB (le symbole est caché pour les autres objets en temps d'exécution - programmes et libs dynamiques - mais une lib statique est linkée dans un tel objet et donc le symbole est accessible là où cette lib statique est linkée) et donc la référence de la libA.so ne peut pas être résolue, la solution est le linker la libA.so avec la libB.a.