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

Which 4.x version of gcc should one use?

提问人:Olof 提问时间:8/28/2008 最后编辑:Vadim KotovOlof 更新时间:10/11/2017 访问量:1723

问:

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

人们是否将 4.3.2 用于大型代码库并觉得它工作正常?

c 海湾合作委员会

评论


答:

1赞 Bernard 8/28/2008 #1

我没有适合您的特定版本,但为什么不安装 4.X 3.4.6?然后,您可以尝试在两个版本上保持代码编译,如果您在 4 中遇到一个令人眼花缭乱的错误,则有一个退出策略。

0赞 KannoN 8/28/2008 #2

如果您对 OpenMP 感兴趣,则需要迁移到 gcc 4.2 或更高版本。我们在大约 5M 行的代码库上使用 4.2.2,并且没有任何问题。

4赞 dmo 8/29/2008 #3

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

4赞 nimish 9/1/2008 #4

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

GCC 4.3 还更好地支持在较新的 CPU 上进行优化。

0赞 Branan 9/24/2008 #5

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

1赞 vonbrand 2/2/2013 #6

使用最新的,但要寻找并理解每一个警告。为了增加乐趣,还有更多的警告标志可以擦亮。您确实有一套广泛的回归(和其他)测试,请运行它们并检查它们。-Wall

GCC(特别是C++,还有C)已经发生了很大的变化。它做了更好的代码分析和优化,并且确实处理了以不同的方式调用未定义的 bahaviiour 的代码。因此,“工作正常”但实际上依赖于对无效结构的某些特定解释的代码可能会损坏。希望使编译器发出警告或错误,但不能保证这种运气。