bugfix> makefile > 投稿

さまざまなソースから(このような)ビルドジョブを次のものと並列化できることを述べます。

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 件
  • ザ・ make  システムで使用されるバージョンは、 -j を無効にする構成アイテムを使用してコンパイルされている必要があります  タスクエンジン。 GNU Make 3.81および4.2を再コンパイルすると、 -j を正常に使用できるバイナリが生成されました  数字で切り替えます。

あなたの答え