指定数字的-j(多个作业)在QNX中不起作用

时间:2018-05-25 12:55:15

标签: makefile gnu-make qnx

从各种来源(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中有效?

1 个答案:

答案 0 :(得分:0)

系统中使用的make版本必须使用禁用-j任务引擎的配置项进行编译。重新编译GNU Make 3.81和4.2产生了可以成功使用带有数字的-j开关的二进制文件。