use*_*260 0 makefile compilation
我正在使用GCC 4.7并编译我的C++代码项目.代码由分布在目录中的文件组成.
在我使用的RHEL服务器上,有16个内核,编译速度仍然很慢.你能否提出makefile的可能替代方案或选项,这可能有助于快速编译.我试过-j但它只编译一些文件夹并停止; 不编译主二进制文件.
我将不胜感激任何帮助.
如果makefile在编译时失败-j但在没有的情况下工作正常,则可能需要修复makefile才能正常编译.否则,那些其他15个核心对你没用.
对于经验不足的makefile编写者来说,写一些类似的东西并不罕见:
final: step1 step2 step3
Run Code Online (Sandbox Code Playgroud)
表示"构建最终,第一个构建步骤1,然后是步骤2,然后是步骤3".当您使用默认设置运行时,这可以正常工作,-j 1因为它make会以从左到右的顺序构建每个依赖项.但是如果你使用-j 20(比如说)那么它会尝试并行构建它们.它将尝试立即开始构建所有3个步骤,而不必先等待,直到每个连续步骤完成.
写这个的正确方法是:
final: step3
step3: step2
step2: step1
Run Code Online (Sandbox Code Playgroud)
这make准确地说明了发生了什么:构建final您首先需要构建step3您需要的step2,您需要的step1.