哪些标志可以提高gcc/clang编译时间?

6

有哪些gcc或clang标志可以提高编译速度?我需要启用调试,但如果禁用其他功能可以加快编译速度。

我知道有许多其他方法可以提高编译速度,但我只对这个领域感兴趣。


你所能希望通过调整编译器标志来加速编译时间的最佳方法就是返回已翻译的文本。没有任何标志可以“神奇地”使编译时间更快。您需要探索其他方法来改进构建时间。 - greatwolf
1
挥舞白旗可能有所帮助。此外,-c或-E已经被证实可以提高编译时间。在任何情况下:向我们展示一些代码,我们就可以开始提示改进构建时间的方法。 - sehe
6个回答

6

编译时间最长的部分通常是优化,通过消除编译器所做的大部分工作可以获得最大的优化。因此,请不要启用优化(-O)标志。


加上 -O0 没有帮助。现在我使用以下标志:-g3 -O0 -Wfatal-errors -Wall -Wno-unused-variable -Wno-unused-function -Wall -W -Wwrite-strings -Wstrict-prototypes -Wmissing-declarations -ffast-math -Wno-missing-declarations - jonr
添加-O0正是按照Greg所说的做。它会禁用优化。 - David Hammen
在我一开始没有任何-O标志的情况下添加-O0似乎没有任何效果。我发现我上面犯了一个错误,“现在”不应该包括-O0。 - jonr
是的,默認情況下(至少對於gcc而言),沒有“-O”標誌意味着沒有啟用優化。請注意,如果您希望我們提供具體的建議來更改編譯器命令行,那麼您可能應該在問題中提供您的編譯器命令行。 - Greg Hewgill
我可以看出你正在努力为你的答案辩护。这很好,我对使用可能的标志的更详细概述感兴趣,希望不仅仅是-O。如果没有其他标志,那就这样吧,但如果有的话,那就是我认为足够的答案。让我这样说:从根本上没有标志开始,现在你可以添加哪些标志来加快编译速度? - jonr
我谨虚心建议,使用“没有任何标志”可能会导致最快的编译时间。我不知道是否有任何神奇的“--fast-compile”开关可以缩短编译器的时间。 - Greg Hewgill

3

尝试使用-O1选项,尽管这在我所知道的情况下似乎与直觉相反,但可以加快编译速度,相较于-O0。另外,请查看ccache


4
ccache无法减少编译时间。它可以通过“防止编译”来减少构建时间。 - sehe

3
你也可以尝试使用预编译头文件。

2
关于GCC,您可以尝试多线程编译(-jX标志,其中X是您拥有的核心数+1,根据Qt Centre中Reducing compile times文章)。
更新:看来我犯了一个错误:-jX是一个'make'标志,而不是GCC。因此,如果您使用基于make的构建系统,则会改善链接时间。

0
如果您可以访问网络上的更多CPU,您可以使用distcc

-3

如果我们以“不使用任何标志进行编译”作为基准线,那么您无法设置任何标志来增加编译时间。


哎呀,你不小心把一个单词倒过来了吗? - sehe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接