应该使用哪一个4.x版本的gcc?

应该使用哪一个4.x版本的gcc?,c,gcc,C,Gcc,我工作的产品组目前正在使用gcc 3.4.6(我们知道它很古老)作为大型低级c代码库,并希望升级到更高版本。我们已经看到在我们测试的所有硬件平台上测试不同版本的GCC4.x的性能优势。然而,我们非常害怕c编译器错误(历史上有一个很好的理由),并且怀疑是否有人知道我们应该升级到哪个版本 人们是否使用4.3.2来编写大型代码库,并认为它运行良好?我没有为您提供特定版本,但为什么不安装4.X和3.4.6呢?然后,您可以尝试在两个版本上编译代码,如果您在4中遇到停止播放的错误,您有一个退出策略。如果您对

我工作的产品组目前正在使用gcc 3.4.6(我们知道它很古老)作为大型低级c代码库,并希望升级到更高版本。我们已经看到在我们测试的所有硬件平台上测试不同版本的GCC4.x的性能优势。然而,我们非常害怕c编译器错误(历史上有一个很好的理由),并且怀疑是否有人知道我们应该升级到哪个版本


人们是否使用4.3.2来编写大型代码库,并认为它运行良好?

我没有为您提供特定版本,但为什么不安装4.X和3.4.6呢?然后,您可以尝试在两个版本上编译代码,如果您在4中遇到停止播放的错误,您有一个退出策略。

如果您对OpenMP感兴趣,则需要转到gcc 4.2或更高版本。我们在大约500万行的代码基础上使用4.2.2,没有任何问题。

当我将一个项目从GCC 3迁移到GCC 4时,我运行了几个测试,以确保前后的行为相同。您是否可以运行一组(希望是自动的)测试来确认正确的行为?毕竟,您需要的是“正确”的行为,而不一定是GCC 3的行为。

GCC的最佳质量控制是linux内核。GCC基本上是所有主要开源C/C++程序的首选编译器。一个发布的GCC,特别是像4.3.X这样的,在主要的linux发行版中,应该是相当不错的


GCC4.3还更好地支持在较新的CPU上进行优化。

关于4.3.2我不能说什么,但我的笔记本电脑是用GCC4.3构建的Gentoo Linux系统。{0,1}(取决于每个包的构建时间),我没有看到任何问题。不过,这基本上只是标准的桌面使用。如果您有任何奇怪的代码,您的里程数可能会有所不同。

使用最新的代码,但查找并理解
-Wall
给出的每一条警告。为了获得更多的乐趣,这里有更多的警告标志。您确实有一套广泛的回归(和其他)测试,运行它们并检查它们

GCC(特别是C++,但C)也有很大的变化。它能更好地进行代码分析和优化,并能处理以不同方式调用未定义bahaviiour的代码。所以那些“运行良好”但确实依赖于对无效结构的特定解释的代码可能会崩溃。希望编译器发出警告或错误,但不能保证这样的运气