Frage

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

Verwenden die Leute 4.3.2 für große Codebasen und haben das Gefühl, dass es gut funktioniert?

War es hilfreich?

Lösung

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 großen Linux-Distributionen enthalten ist, sollte ziemlich gut sein.

GCC 4.3 bietet außerdem eine bessere Unterstützung für Optimierungen auf neueren CPUs.

Andere Tipps

Als ich ein Projekt von GCC 3 auf GCC 4 migrierte, führte ich mehrere Tests durch, um sicherzustellen, dass das Verhalten vorher und nachher dasselbe war.Können Sie einfach eine Reihe (hoffentlich automatisierter) Tests durchführen, um das korrekte Verhalten zu bestätigen?Schließlich möchten Sie das „richtige“ Verhalten, nicht unbedingt das GCC 3-Verhalten.

Ich habe keine spezielle Version für Sie, aber warum nicht eine 4.X? Und 3.4.6 installiert?Dann könnten Sie versuchen, die Kompilierung des Codes in beiden Versionen aufrechtzuerhalten, und wenn Sie in 4 auf einen auffälligen Fehler stoßen, haben Sie eine Exit-Richtlinie.

Verwenden Sie die neueste Version, aber aufspüren und verstehen jede einzelne Warnung -Wall gibt.Für noch mehr Spaß gibt es noch mehr Warnflaggen zum Ausprobieren.Du Tun Führen Sie eine umfangreiche Reihe von Regressionstests (und anderen Tests) durch, führen Sie sie alle aus und überprüfen Sie sie.

GCC (insbesondere C++, aber auch C) hat sich ziemlich verändert.Es ermöglicht eine viel bessere Codeanalyse und -optimierung und behandelt Code, der undefiniertes Verhalten auslöst, anders.Code, der „gut funktionierte“, sich aber wirklich auf eine bestimmte Interpretation ungültiger Konstruktionen stützte, wird wahrscheinlich kaputt gehen.Ich hoffe, dass der Compiler eine Warnung oder einen Fehler ausgibt, aber es gibt keine Garantie für ein solches Glück.

Wenn Sie an OpenMP interessiert sind, müssen Sie auf gcc 4.2 oder höher umsteigen.Wir verwenden 4.2.2 auf einer Codebasis von etwa 5 Millionen Zeilen und haben damit keine Probleme.

Ich kann nichts über 4.3.2 sagen, aber mein Laptop ist ein Gentoo-Linux-System, das mit GCC 4.3.{0,1} erstellt wurde (abhängig davon, wann jedes Paket erstellt wurde), und ich habe keine Probleme gesehen.Dabei handelt es sich jedoch meist nur um die Standard-Desktop-Nutzung.Wenn Sie einen seltsamen Code haben, kann Ihr Kilometerstand variieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top