6

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

人们是否将 4.3.2 用于大型代码库并觉得它运行良好?

4

6 回答 6

4

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

于 2008-08-28T20:23:39.537 回答
4

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

GCC 4.3 也对较新的 cpu 的优化提供了更好的支持。

于 2008-09-01T00:10:42.493 回答
1

我没有适合您的特定版本,但为什么不安装 4.X3.4.6?然后,您可以尝试在两个版本上保持代码编译,如果您在 4 中遇到停止显示的错误,则您有一个退出策略。

于 2008-08-28T14:49:22.663 回答
1

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

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

于 2013-02-01T20:46:42.507 回答
0

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

于 2008-08-28T15:02:35.750 回答
0

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

于 2008-09-23T17:59:18.610 回答