ここでいくつかのプログラムをコンパイルしていますが、4つのコアがあります。伝える方法make
、cmake
またはgcc
すべてのコアなどを使用してコンパイルする方法はありますか?
ここでいくつかのプログラムをコンパイルしていますが、4つのコアがあります。伝える方法make
、cmake
またはgcc
すべてのコアなどを使用してコンパイルする方法はありますか?
回答:
パッケージがサポートしている場合、-j
フラグを使用して、並列ジョブの実行を許可できます。例:
make -j8
このフラグの詳細については、Stackoverflowの質問をご覧ください。利用可能なコアの数よりも大きい数を渡すと-jのパフォーマンスが向上するのはなぜですか?。
複数のマシンがある場合は、distccを試してください。関与マシンでは、sudo apt-get install distcc
。ビルドマシンが192.168.1.1であると仮定します。
ヘルパーマシンで、次を実行します。
sudo distccd --log-file=/tmp/distccd.log --daemon -a 192.168.1.1
ビルドマシン上で、実行する前に、configure
またはcmake
ビルドプロセスに使用するホストを指定する必要があります。オプションで、スラッシュの後に同時ジョブの数を指定します(デフォルトは4):
export DISTCC_HOSTS='localhost/4 192.168.1.2/8 192.168.1.3/8'
コンパイラーにdistccを使用させます:
export PATH="/usr/lib/distcc:$PATH"
今、configure
またはcmake
アプリケーションとビルドで:
make -j$(distcc -j)
/usr/lib/distcc
PATH に2回入力すると、失敗することに注意してください。必ず/usr/lib/distcc
一度だけ設定してくださいPATH
。
詳細については、distcc(1)およびdistccd(1)のマニュアルページを参照してください。
distccd --user nobody
。それ以外の場合は、実行したユーザーの下で実行されます。