6 Stimmen

Welche 4.x Version von gcc sollte man verwenden?

Die Produktgruppe, für die ich arbeite, verwendet derzeit gcc 3.4.6 (wir wissen, dass er uralt ist) für eine große Low-Level-C-Code-Basis und möchte auf eine neuere Version umsteigen. Wir haben beim Testen verschiedener Versionen von gcc 4.x auf allen Hardware-Plattformen, auf denen wir es getestet haben, Leistungsvorteile festgestellt. Wir sind jedoch sehr Ich habe Angst vor C-Compiler-Fehlern (aus gutem Grund) und frage mich, ob jemand eine Ahnung hat, auf welche Version wir aktualisieren sollten.

Gibt es Leute, die 4.3.2 für große Code-Basen verwenden und der Meinung sind, dass es gut funktioniert?

4voto

dmo Punkte 3853

Als ich ein Projekt von GCC 3 auf GCC 4 migriert habe, habe ich mehrere Tests durchgeführt, um sicherzustellen, dass das Verhalten vorher und nachher gleich ist. Können Sie einfach eine Reihe von (hoffentlich automatisierten) Tests durchführen, um das korrekte Verhalten zu bestätigen? Schließlich wollen Sie das "richtige" Verhalten, nicht unbedingt das Verhalten von GCC 3.

4voto

nimish Punkte 4440

Die beste Qualitätskontrolle für gcc ist der Linux-Kernel. GCC ist der Compiler der Wahl für praktisch alle wichtigen Open-Source-C/C++-Programme. Ein veröffentlichter GCC, insbesondere einer wie 4.3.X, der in den wichtigsten Linux-Distributionen enthalten ist, sollte ziemlich gut sein.

GCC 4.3 hat auch eine bessere Unterstützung für Optimierungen auf neueren CPUs.

1voto

Bernard Punkte 44542

Ich habe keine bestimmte Version für Sie, aber warum nicht eine 4.X und 3.4.6 installiert? Dann könnten Sie versuchen, den Code in beiden Versionen zu kompilieren, und wenn Sie auf einen auffälligen Fehler in 4 stoßen, haben Sie eine Ausstiegsregelung.

1voto

vonbrand Punkte 10792

Verwenden Sie die neueste Version, aber aufspüren und verstehen jede einzelne Warnung -Wall gibt. Für zusätzlichen Spaß gibt es noch mehr Warnflaggen zum Frobieren. Sie tun eine umfangreiche Suite von Regressionstests (und anderen Tests) haben, führen Sie sie alle aus und überprüfen Sie sie.

GCC (insbesondere C++, aber auch C) hat sich ziemlich verändert. Er führt eine viel bessere Code-Analyse und -Optimierung durch und geht anders mit Code um, der undefinierte Bahaviiour aufruft. Code, der "gut funktioniert" hat, aber in Wirklichkeit auf eine bestimmte Interpretation ungültiger Konstruktionen angewiesen war, wird also wahrscheinlich nicht mehr funktionieren. Hoffentlich wird der Compiler eine Warnung oder einen Fehler ausgeben, aber das ist keine Garantie für solches Glück.

0voto

KannoN Punkte 352

Wenn Sie an OpenMP interessiert sind, müssen Sie zu gcc 4.2 oder höher wechseln. Wir verwenden 4.2.2 für eine Codebasis von etwa 5 Mio. Zeilen und haben damit keine Probleme.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X