从各种来源(like this)声明您可以将构建作业与以下内容并行化:
make -j n
其中n
是作业数量。在带有GNU Make 3.81的QNX 6.5.0中
我注意到这个数字似乎不起作用。如果我拨打make -j
(没有号码),将启动大量编译器并完全使用处理器:
CPU states: 80.5% user, 5.0% kernel
CPU 0 Idle: 15.2%
CPU 1 Idle: 13.2%
CPU 2 Idle: 14.7%
Memory: 0 total, 281M avail, page size 4K
PID TID PRI STATE HH:MM:SS CPU COMMAND
8200 2 21 Rcv 0:00:17 12.02% devb-eide
43565087 1 10 Rdy 0:00:00 11.38% make
43819103 1 10 Rply 0:00:00 3.01% cmake
43716678 1 10 Rply 0:00:00 2.80% cmake
43671611 1 10 Rply 0:00:00 1.87% make
43589671 1 10 Rply 0:00:00 1.73% make
43569184 1 10 Rply 0:00:00 1.73% make
43573283 1 10 Rply 0:00:00 1.46% make
43667514 1 10 Rply 0:00:00 1.28% make
43839590 1 10 Send 0:00:00 1.10% cmake
不幸的是,当我使用具有大量并发构建的make -j
时,意味着我的有限VM很快就会耗尽内存。
但是如果我添加一个数字(例如make -j 4
,它对应于我的VM中的核心数),那么它只会启动1个进程。这也发生在以下变体中:
make -j4
make -j 4
make --jobs=4
make --jobs 4
以及其他一些处理器编号(2,3,4,5,6,7,8)。
为什么没有指定号码的make -j
在QNX中有效?
答案 0 :(得分:0)
系统中使用的make
版本必须使用禁用-j
任务引擎的配置项进行编译。重新编译GNU Make 3.81和4.2产生了可以成功使用带有数字的-j
开关的二进制文件。