我正在尝试在我的 CentOS 机器上安装 LLVM。在LLVM的安装教程中,-jn
与 一起指定了一个标志make
。
它说要表演make -jn
,还说“选择 n 以使 make 不会遇到交换空间问题。”
该标志有什么用处-j
以及如何选择 n 的值?
答案1
make-j
标志表示您要分配多少线程用于编译。
n
在本例中,是进程数的占位符。
经典的经验法则是,安全性n
= CPU 的核心数量。因此,如果您在双核机器上,则可以使用-j2
, 而在 8 核机器上-j8
在实践中,我发现这是一个很好的起点,但您可能应该随意尝试一下,看看什么最适合您。
答案2
使用 n = 核心数是否安全还取决于您是否有足够的内存用于所有并行编译/链接作业。它还可能导致磁盘 I/O 问题。如果这是一个 make 工作,您只希望需要运行一次,那么最好选择较低的 n 并让它慢慢来。
答案3
该-j
标志告诉make(1)
有多少个进程并行运行。最佳值取决于运行的任务、依赖关系……经验法则是处理器的数量。如果您只给出-j
(no n
),make
则并行启动尽可能多的进程。
答案4
-j
正如该标志如何影响构建操作以及谨慎对待它的原因的具体示例一样:
我忘记了我有MAKEFLAGS=-j5
并尝试构建 LLVM;一旦达到97%
百分比,它就会ld
同时生成 5 个进程,每个进程都会消耗1.5GB
+ RAM。第一个在 20 分钟内崩溃了,其余的不断消耗越来越多的内存,直到我的计算机无法使用,我最终决定Ctrl+C
使用较小的-j
.我-j3
的计算机仍然在三个ld
进程中挣扎,但至少我仍然可以输入这个,只有一些小问题。