ここでいくつかのプログラムをコンパイルしていますが、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/distccPATH に2回入力すると、失敗することに注意してください。必ず/usr/lib/distcc一度だけ設定してくださいPATH。
詳細については、distcc(1)およびdistccd(1)のマニュアルページを参照してください。
distccd --user nobody。それ以外の場合は、実行したユーザーの下で実行されます。