编译llvm时llvm [n]的含义,其中n是整数

时间:2015-09-11 19:23:47

标签: clang llvm gnu-make

我正在编译LLVM以及clang。我注意到编译的输出有llvm[1]:llvm[2]:llvm[3]:每行都有前缀。括号中的整数是什么意思?

2 个答案:

答案 0 :(得分:1)

目前接受的答案不正确。此外,这实际上是一个GNU Make问题,而不是LLVM问题。

您所看到的是由MAKELEVEL向命令行回显的make变量的当前值。此值设置为递归执行的结果。来自GNU make manual

  

作为一项特殊功能,变量MAKELEVEL在从一个级别传递到另一个级别时会发生变化。此变量的值是一个字符串,它是十进制数的级别深度。顶级make的值为'0';子项的“1”,子项的“2”,依此类推。当make为配方设置环境时,会发生增量。

如果您手头有GNU Make源代码的副本,您可以看到使用output.c功能在void message(...)中生成输出消息。在GNU make v4.2中,这发生在第626行。具体来说,program参数设置为字符串" llvm"并且makelevel参数的设置如上所述。

由于它被错误地启动,它不是编译工作的编号。 -j [jobs]--jobs[=jobs]选项可同时启用并行执行最多jobs个配方。如果选择了-j--jobs,但未设置jobs,则GNU Make会尝试同时执行尽可能多的配方。有关详细信息,请参阅this section of the GNU Make manual

可以在没有并行执行的情况下进行递归执行,并且可以在没有递归执行的情况下执行并行执行。这是目前接受的答案不正确的主要原因。

答案 1 :(得分:0)

这是编译作业的编号(make -j)。有助于跟踪编译错误。