Compilation en mode release (-02) : ca link plus avec gcc 4.4.2

Compilation en mode release (-02) : ca link plus avec gcc 4.4.2 - C++ - Programmation

Marsh Posté le 20-01-2010 à 18:56:17    

J'espère poster dans la bonne catégorie. Je travaille sur un projet comportant plusieurs grands blocs, dont certaines briques de base sont compilées sous forme de librairie dynamique (je suis sous linux, GCC 4.4.2)

 

Plusieurs blocs utilisent notamment une librairie de base et link dessus sans soucis, que ce soit en mode debug ou en mode release. Cependant, le bloc sur le quel je travaille actuellement ne link sur la librairie qu'en mode debug. Que la librairie sois en mode release ou en mode debug, il _faut_ que je compile mon bloc (disont A) en debug, sinon pas de link !

 

Il semble donc que certaines sections (et le nombre d'erreur est très important) soient sensibles aux optimisations faites par le compilo, et ce sont des sections qui sont utilisées par les autres blocs qui utilisent la librairie de base !

 

J'ai essayé de compiler tous les blocs avec GCC 4.1.2 et ca marche ! Je me demande donc comment je pourrais retracer les problèmes...
Voici un exemple d'erreur :

 

netlistGenerator.cpp:(.text+0x2702): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::basic_ostream<char, std::char_traits<char> >

 

C'est un peu toutes les même erreurs partout.  Je suis en train de lire ceci http://gcc.gnu.org/bugs/#known et peut etre regarder si j'ai pas des warnings nouveaux avec gcc 4.4.2 (je travaille en -Wall). J'ai vu que le passage de l'un a l'autre présentait beaucoup de nouveaux warnings (enfin beaucoup, une dizaine)

 

[edit] J'ai oublie de preciser que gcc 4.4.2 a ete compile par moi meme, sans option particuliere... J'y verrai bien la cause de mes soucis !


Message édité par guepe le 20-01-2010 à 19:35:14

---------------
Un blog qu'il est bien
Reply

Marsh Posté le 20-01-2010 à 18:56:17   

Reply

Marsh Posté le 20-01-2010 à 19:14:43    

Bon ben finalement, a part quelques "unused variable" (tout à fait normal, dans des sections non terminées) le reste compile sans warning avec -Wall !
Je doute avoir trouvé un bug de gcc mais c'est quand même étrange que cela compile avec 4.1.2 et pas 4.4.2, le tout sans warning particulier !
Je vais essayer de compiler sur un 4.4.2 qui n'a pas été compilé par moi-même, mais je ne l'ai qu'en 32bits.


---------------
Un blog qu'il est bien
Reply

Marsh Posté le 20-01-2010 à 19:50:31    

Bon ben j'ai trouve : j'ai pas compile gcc avec les bonnes options, parce que ca compile sur mon archlinux :-)
J'ai plus qu'a le recompiler, desole du derangement. Je posterai les options que j'ai utilise lorsque ca marchera, au cas ou ca servirait a quelqu'un !


---------------
Un blog qu'il est bien
Reply

Marsh Posté le 26-01-2010 à 23:00:29    

Bah en fait non c'est pas tout à fait cela : après avoir nettoyé tout j'ai ceci maintenant :
 
gcc 4.1.2 fourni par la distribution par défaut : tout fonctionne, ca link et tout en release et debug
gcc 4.3.2 fourni par la distribution, mais installé en plus : tout compile, mais PAS de link de mon exe sur ma lib, avec _plein_ de symboles non définis.
 
Se pourrait-il que ce soit plus du côté de problème de libstdc++ ou quelque chose du genre ? Pour le moment je bosse avec gcc 4.1.2, mais pas d'openmp  :(


---------------
Un blog qu'il est bien
Reply

Marsh Posté le 27-01-2010 à 07:16:08    

gcc 4.3.2 a peut etre besoin de libstd++6.
Et d'habitude, je compile jamais gcc, c'ets chiant comme la mort. T'as pas un package pr ça (que se soit le 4.4 ou les autres) ?

Message cité 1 fois
Message édité par Joel F le 27-01-2010 à 07:17:39
Reply

Marsh Posté le 02-02-2010 à 19:46:52    

Joel F a écrit :

gcc 4.3.2 a peut etre besoin de libstd++6.
Et d'habitude, je compile jamais gcc, c'ets chiant comme la mort. T'as pas un package pr ça (que se soit le 4.4 ou les autres) ?


En fait j'ai 4.3 en package, mais c'est le MEME problème ! Et je l'ai toujours pas résolu. Il me faut juste 4.2 minimum.
 
J'ai regardé : la libstdc++ pour gcc 4.3 est dispo en package avec le paquet, et est installé. J'ai un peu laissé tombé pour le moment, mais c'est vraiment trop  :fou:


---------------
Un blog qu'il est bien
Reply

Sujets relatifs:

Leave a Replay

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