6

私が働いている製品グループは、現在、大規模な低レベルのcコードベースにgcc 3.4.6(古いものであることがわかっています)を使用しており、新しいバージョンにアップグレードしたいと考えています。テストしたすべてのハードウェアプラットフォームで、さまざまなバージョンのgcc4.xをテストするとパフォーマンスが向上することがわかりました。しかし、私たちはc-compilerのバグを非常に恐れており(歴史的には正当な理由があります)、どのバージョンにアップグレードすべきかについて誰かが洞察を持っているかどうか疑問に思います。

大規模なコードベースに4.3.2を使用していて、正常に機能していると感じている人はいますか?

4

6 に答える 6

4

gccの最高の品質管理はLinuxカーネルです。GCCは、基本的にすべての主要なオープンソースC /C++プログラムに最適なコンパイラです。リリースされたGCC、特に主要なLinuxディストリビューションにある4.3.XのようなGCCは、かなり良いはずです。

GCC 4.3は、新しいCPUでの最適化もより適切にサポートしています。

于 2008-09-01T00:10:42.493 に答える
4

プロジェクトを GCC 3 から GCC 4 に移行したとき、いくつかのテストを実行して、前後で動作が同じであることを確認しました。一連の (できれば自動化された) テストを実行して、正しい動作を確認できますか? 結局のところ、必ずしも GCC 3 の動作ではなく、「正しい」動作が必要です。

于 2008-08-28T20:23:39.537 に答える
1

最新のものを使用しますが、警告が表示されるたびに探して理解して-Wallください。さらなる楽しみのために、フロブする警告フラグがさらにあります。回帰(およびその他の)テストの広範なスイートがあり、それらすべてを実行してチェックします

GCC (特に C++ ですが、C も) はかなり変更されました。コード分​​析と最適化がはるかに優れており、未定義の動作を別の方法で呼び出すことが判明したコードを処理します。そのため、「正常に機能した」が、無効な構造の特定の解釈に実際に依存していたコードは、おそらく壊れます。コンパイラに警告またはエラーを発行させることを願っていますが、そのような幸運を保証するものではありません。

于 2013-02-01T20:46:42.507 に答える
1

特定のバージョンはありませんが、4.X3.4.6 がインストールされていないのはなぜですか? その後、両方のバージョンでコードをコンパイルし続けることができます。4 でショーを停止するバグに遭遇した場合は、終了ポリシーがあります。

于 2008-08-28T14:49:22.663 に答える
0

OpenMP に関心がある場合は、gcc 4.2 以降に移行する必要があります。約 5M 行のコード ベースで 4.2.2 を使用していますが、問題はありません。

于 2008-08-28T15:02:35.750 に答える
0

4.3.2 については何も言えませんが、私のラップトップは GCC 4.3.{0,1} (各パッケージがいつビルドされたかによって異なります) でビルドされた Gentoo Linux システムであり、問​​題は見られませんでした。ただし、これはほとんど標準的なデスクトップでの使用にすぎません。奇妙なコードがある場合、マイレージは異なる場合があります。

于 2008-09-23T17:59:18.610 に答える