2010-09-08 8 views
0

Configuration: J'ai installé Cygwin avec la programmation GNU (gcc, g ++, make et gdb) et j'ai compilé avec succès un programme sur lequel je travaillais. Ensuite, j'ai décidé d'installer boost dans Cygwin parce que je devrais utiliser des trucs de boost typiques pendant que mon programme se développe. Donc, en utilisant le Cyber ​​setup.exe, j'ai installé boost. Après cela, le programme que j'avais compilé et couru avec succès ne fonctionnait plus. (Et rappelez-vous qu'il ne dépendait pas de boost.)Cygwin boost est livré avec le nouveau g ++ qui semble casser mon code ... pourquoi?

J'ai découvert que lorsque boost installé, il a également installé un nouveau compilateur, g ++ - 4.exe, alors qu'avant j'utilisais r ++ - 3.exe. Boost avait aussi lié symboliquement g ++ .exe au nouveau compilateur. Après avoir changé le lien symbolique mon ancien programme compilé correctement.

Y a-t-il une raison pour laquelle je devrais utiliser g ++ - 4 plutôt que g ++ - 3?

Répondre

1

g ++ 3 est très ancien et la communauté gcc en a depuis longtemps abandonné la maintenance. (GCC 4.3 est actuellement le oldest maintained release series.) Il y a eu beaucoup d'améliorations de la conformité linguistique dans les nouvelles versions (à la fois en acceptant le code valide et en rejetant le mauvais code), donc vous aurez plus de facilité. Vous pouvez vérifier les notes de version pour chaque série (par exemple for 4.0) pour obtenir des explications sur ces améliorations et les modifications de code qu'elles peuvent nécessiter. Personnellement, je trouve la programmation beaucoup plus agréable quand je peux raisonner sur des programmes selon une spécification de langage précise, et que je suis rarement obligé de comprendre les bizarreries d'un compilateur particulier. De plus, le support Boost pour g ++ 3 semble toucher à sa fin, car Boost 1.44 considère GCC 3 (.4.6) comme un "compilateur de test supplémentaire" sur une seule plate-forme (RHEL). Le développement de Boost est linéaire (et non ramifié), vous pouvez donc vous trouver dans une situation où vous devez effectuer une mise à jour pour obtenir des corrections de bogues, mais ensuite constater que votre plateforme n'est plus supportée.

+0

Wow ... c'est une bonne info. – JnBrymn

+0

Juste pour que vous sachiez, sur la base de vos commentaires, j'ai changé les liens symboliques en g ++ - 4 et j'ai fait l'effort supplémentaire de faire fonctionner le code avec le nouveau compilateur. Dans le processus, j'ai commencé à voir certains des problèmes potentiels auxquels vous faisiez allusion. Je suis content que j'ai pris un peu de temps pour faire les choses correctement. – JnBrymn

+0

Heureux d'entendre que ça a payé si vite. Je suis en train de faire du développement C++ avec MSVC et GCC 4.4. GCC attrape beaucoup de C++ invalide que MSVC permet. Il peut être un peu frustrant d'avoir à corriger le code "de travail", mais il attrape les problèmes plus tôt quand ils sont moins chers à réparer. Maintenant, je peux être beaucoup plus confiant que le portage vers un autre système d'exploitation, l'essai d'un nouveau compilateur, ou même simplement l'instanciation d'un modèle pour la première fois impliqueront beaucoup moins de tracas sur la route. –

Questions connexes