さまざまなソースから(このような)ビルドジョブを次のものと並列化できることを述べます。
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で動作しますか?
ザ・
make
システムで使用されるバージョンは、-j
を無効にする構成アイテムを使用してコンパイルされている必要があります タスクエンジン。 GNU Make 3.81および4.2を再コンパイルすると、-j
を正常に使用できるバイナリが生成されました 数字で切り替えます。