Question

Le produit-groupe je travaille actuellement à l'aide de gcc 3.4.6 (nous savons que c'est l'ancienne) pour un grand bas-niveau c-base de code, et souhaitez mettre à niveau vers une version ultérieure.Nous avons vu les avantages de performance à tester les différentes versions de gcc 4.x sur toutes les plates-formes matérielles, nous l'avons testé sur.Nous sommes cependant très peur de compilateur c de bugs (pour une bonne raison dans l'histoire), et je me demande si quelqu'un l'a aperçu pour la version à laquelle nous devrions mise à niveau.

Sont des gens à l'aide 4.3.2 pour les grandes code-bases et la sensation que cela fonctionne bien?

Était-ce utile?

La solution

Le meilleur contrôle de qualité pour gcc est le noyau linux.GCC est le compilateur de choix pour, fondamentalement, tous les grands open source de programmes C/C++.Un libéré GCC, surtout une comme la 4.3.X, qui est dans les grandes distributions linux, devrait être assez bonne.

GCC 4.3 a également un meilleur support pour les optimisations sur des processeurs récents.

Autres conseils

Quand j'ai migré un projet de GCC 3 à GCC 4, j'ai couru plusieurs tests pour s'assurer que le comportement était le même avant et après.Pouvez-vous exécutez une course un ensemble de (espérons-le automatisée) des tests pour valider le bon comportement?Après tout, vous voulez le "bon" comportement, pas nécessairement de la GCC 3 comportement.

Je n'ai pas une version spécifique pour vous, mais pourquoi ne pas avoir un 4.X et 3.4.6 installé?Alors vous pourriez essayer et de garder le code de la compilation sur les deux versions, et si vous exécutez à travers un show-arrêt bug dans 4, vous avez une politique de sortie.

L'utilisation la plus récente, mais traquer et de comprendre chaque avertissement -Wall donne.Pour plus de plaisir, il y a plus de drapeau d'avertissement de frob.Vous faire ont une gamme complète de régression (et d'autres), les tests, les exécuter et de les vérifier.

GCC (notamment C++, mais aussi en C) a un peu changé.Elle fait beaucoup mieux le code d'analyse et d'optimisation, et ne poignée de code qui s'avère d'invoquer undefined bahaviiour différemment.Donc le code qui "a travaillé bien", mais n'avait vraiment compter sur certains d'interprétation particulière de l'invalidité de constructions sera probablement la rupture.J'espère faire le compilateur émettre un avertissement ou une erreur, mais aucune garantie de la chance.

Si vous êtes intéressé par OpenMP, alors vous aurez besoin pour passer à gcc 4.2 ou supérieur.Nous utilisons 4.2.2 sur une base de code d'environ 5M lignes et ne sont pas du tout avoir de problèmes avec elle.

Je ne peux rien dire sur 4.3.2, mais mon portable est un système Gentoo Linux construit avec GCC 4.3.{0,1} (selon le moment où chaque paquet a été construit), et je n'ai pas vu de problèmes.C'est surtout juste de bureau standard, bien que.Si vous avez tout bizarre de code, votre kilométrage peut varier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top