我工作的产品组目前正在使用gcc 3.4.6(我们知道它很古老)用于大型低级c代码库,并希望升级到更高版本。我们已经看到在我们测试它的所有硬件平台上测试不同版本的gcc 4.x的性能优势。然而,我们非常害怕c编译器错误(历史上有一个很好的理由),并且想知道是否有人知道我们应该升级到哪个版本。
人们是否将4.3.2用于大型代码库并认为它工作正常?
答案 0 :(得分:4)
当我将项目从GCC 3迁移到GCC 4时,我进行了多次测试,以确保前后行为相同。你可以运行一组(希望是自动化的)测试以确认正确的行为吗?毕竟,你想要“正确”的行为,不一定是GCC 3的行为。
答案 1 :(得分:4)
gcc的最佳质量控制是linux内核。 GCC是基本上所有主要开源C / C ++程序的首选编译器。一个已发布的GCC,特别是像4.3.X这样的主要Linux发行版,应该还不错。
GCC 4.3也更好地支持对新cpu的优化。
答案 2 :(得分:1)
我没有适合您的特定版本,但为什么不安装4.X 和 3.4.6?然后你可以尝试在两个版本上保持代码编译,如果你在4中遇到一个停止显示的bug,你就有了退出策略。
答案 3 :(得分:1)
使用最新版本,但追捕并了解每个警告-Wall
给出的内容。为了获得额外的乐趣,还有更多的警告标志。你做有一套广泛的回归(和其他)测试,全部运行并检查它们。
GCC(特别是C ++,但也是C)已经发生了很大的变化。它做了更好的代码分析和优化,并且处理的代码最终以不同方式调用未定义的bahaviiour。因此,“工作正常”但真正依赖于对无效结构的某些特定解释的代码可能会破坏。希望让编译器发出警告或错误,但不能保证这样的运气。
答案 4 :(得分:0)
如果您对OpenMP感兴趣,那么您需要转到gcc 4.2或更高版本。我们在大约5M行的代码库上使用4.2.2并且没有任何问题。
答案 5 :(得分:0)
我不能说4.3.2,但我的笔记本电脑是一个用GCC 4.3构建的Gentoo Linux系统。{0,1}(取决于每个软件包的构建时间),我没有看到任何问题。但这主要是标准的桌面使用。如果您有任何奇怪的代码,您的里程可能会有所不同。