Compilation makefile:如何快速编译 我使用GCC 4.7并编译我的C++代码项目。代码由分布在目录中的文件组成

Compilation makefile:如何快速编译 我使用GCC 4.7并编译我的C++代码项目。代码由分布在目录中的文件组成,compilation,makefile,Compilation,Makefile,在我使用的RHEL服务器上,有16个内核,但编译速度相当慢。您能否建议makefile的可能替代方案或选项,这可能有助于快速编译。我试过-j,但它只编译一些文件夹和停止;不编译主二进制文件 我将非常感谢您的帮助。如果使用-j编译时makefile失败,但如果没有,则可以正常工作,那么您可能需要修复makefile,以便使用并行编译正常工作。否则,其他15个内核对您没有任何用处 经验较少的makefile编写人员编写以下内容并不少见: final: step1 step2 step3 意思是“要

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


我将非常感谢您的帮助。

如果使用
-j
编译时makefile失败,但如果没有,则可以正常工作,那么您可能需要修复makefile,以便使用并行编译正常工作。否则,其他15个内核对您没有任何用处

经验较少的makefile编写人员编写以下内容并不少见:

final: step1 step2 step3
意思是“要构建最终版本,首先构建步骤1,然后构建步骤2,然后构建步骤3”。当您使用默认设置
-j1
运行时,这可以正常工作,因为
make
碰巧以从左到右的顺序构建每个依赖项。但是如果您使用
-j20
(比如),那么它将尝试并行构建它们。它将尝试一次开始构建所有3个步骤,而无需首先等待每个后续步骤完成

正确的书写方法是:

final: step3
step3: step2
step2: step1

这告诉
make
确切发生了什么:要构建
final
,首先需要构建
step3
,为此需要
step2
,如果在使用
-j
编译时make文件失败,但在没有,然后,您可能需要修复makefile以正确使用并行编译。否则,其他15个内核对您没有任何用处

经验较少的makefile编写人员编写以下内容并不少见:

final: step1 step2 step3
意思是“要构建最终版本,首先构建步骤1,然后构建步骤2,然后构建步骤3”。当您使用默认设置
-j1
运行时,这可以正常工作,因为
make
碰巧以从左到右的顺序构建每个依赖项。但是如果您使用
-j20
(比如),那么它将尝试并行构建它们。它将尝试一次开始构建所有3个步骤,而无需首先等待每个后续步骤完成

正确的书写方法是:

final: step3
step3: step2
step2: step1
这告诉
make
确切发生了什么:要构建
final
,您首先需要构建
step3
,为此您需要
step2
,为此您需要
step1