gpt4 book ai didi

makefile - 指定编号的 Make -j(多个作业)在 QNX 中不起作用

转载 作者:行者123 更新时间:2023-12-05 07:33:36 32 4
gpt4 key购买 nike

来自各种来源 ( 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)。

为什么在 QNX 中 make -j 不能正常工作?

最佳答案

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

关于makefile - 指定编号的 Make -j(多个作业)在 QNX 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50529746/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com