2008-08-28 18 views
6

我工作的產品組目前正在使用gcc 3.4.6(我們知道這是古老的),用於大型低級別c代碼庫,並且希望升級到更高版本。我們已經看到在我們測試過的所有硬件平臺上測試不同版本gcc 4.x的性能優勢。然而,我們是害怕C編譯器錯誤(歷史上有一個很好的理由),並且懷疑是否有人能夠洞察我們應該升級到哪個版本。gcc應該使用哪個4.x版本?

人們使用4.3.2的大型代碼庫,覺得它工作正常嗎?

回答

4

gcc的最佳質量控制是linux內核。 GCC是所有主要開源C/C++程序的首選編譯器。一個發佈的GCC,尤其是像4.3.X這樣的主流Linux發行版,應該是相當不錯的。

GCC 4.3也更好地支持優化新的cpus。

1

我沒有針對你的特定版本,但是爲什麼沒有安裝4.X 3.4.6?然後你可以嘗試在兩個版本上保持代碼編譯,如果你在4中運行一個停止顯示的bug,那麼你有一個退出策略。

0

如果您對OpenMP感興趣,那麼您將需要移至gcc 4.2或更高版本。我們在大約5M線的代碼庫上使用4.2.2,並且沒有任何問題。

4

當我將項目從GCC 3遷移到GCC 4時,我運行了多個測試以確保行爲在前後相同。你可以運行一組(有希望自動化)的測試來確認正確的行爲嗎?畢竟,你想要「正確」的行爲,不一定是GCC 3的行爲。

0

我不能說4.3.2的任何問題,但我的筆記本電腦是一個用GCC 4.3。{0,1}構建的Gentoo Linux系統(取決於每個包的構建時間),而且我還沒有看到任何問題。不過,這大多隻是標準的桌面使用。如果你有任何奇怪的代碼,你的里程可能會有所不同。

1

使用最新的一個,但追捕並瞭解每個警告-Wall給出。爲了增加樂趣,還有更多的警告標誌frob。你有有一個廣泛的迴歸(和其他)測試套件,運行它們並檢查它們。

GCC(特別是C++,也包括C)已經發生了很大的變化。它做了更好的代碼分析和優化,並且處理的代碼實際上以不同的方式調用undefined bahaviiour。因此,代碼「運行良好」,但確實依賴於對無效構造的某種特定解釋可能會中斷。希望使編譯器發出警告或錯誤,但不能保證這樣的運氣。

相關問題