makefile:如何快速编译

时间:2012-04-05 12:46:56

标签: compilation makefile

我正在使用GCC 4.7并编译我的C ++代码项目。代码由分布在目录中的文件组成。

在我使用的RHEL服务器上,有16个内核,编译速度仍然很慢。你能否提出makefile的可能替代方案或选项,这可能有助于快速编译。我试过-j但它只编译一些文件夹并停止;不编译主二进制文件。

我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:5)

如果使用-j进行编译时makefile失败但没有正常工作,则可能需要修复makefile才能正常编译。否则,那些其他15个核心对你没用。

对于经验不足的makefile编写者来说,编写类似的东西并不罕见:

final: step1 step2 step3

表示“构建最终,首先构建step1,然后是step2,然后是step3”。当您使用默认设置-j 1运行时,这很正常,因为make恰好以从左到右的顺序构建每个依赖项。但是如果你使用-j 20(比如说​​)那么它会尝试并行构建它们。它将尝试立即开始构建所有3个步骤,而不必先等待,直到每个连续步骤完成。

写这个的正确方法是:

final: step3
step3: step2
step2: step1

这会告诉make到底发生了什么:构建final首先需要构建step3,您需要step2,您需要step1 {{1}} }。