みむらです。
複数台のマシンをお持ちの方、絶対いらっしゃいますよね。
ついでに、隅っこで寝てるとかそういうパターン、絶対ありますよね。
ということで、そういうマシンをコンパイルの際に利用して、是非とも効率よくパワーを使いましょう。
ついでに、ccache を有効にして、キャッシュしましょうという、そんなお話。
追記ですが、 Mac OS X にはこれがなにやら、標準で入っているそうです。
Mac マシンを大量にお持ちの方は、是非ともやってみるといいんじゃないでしょうか!
ということで、カーネルを並列ビルドすることを例にして、使い方。 (Linux Mint 12 でテストしてます。)
1.distcc と ccache をインストール。
$ sudo aptitude install distcc ccache
2./etc/default/distcc を修正する。
$ sudo vim /etc/default/distcc # 書き換えるのは下記3点 # 動作を許可させる STARTDISTCC="false" -> STARTDISTCC="true" # 接続可能ホストを設定する。 ALLOWEDNETS="127.0.0.1" -> ALLOWEDNETS="192.168.1.0/24" # リスナとなる NIC の IP アドレスを入力 LISTENER="127.0.0.1" -> LISTENER="192.168.1.200"
3. distcc を起動する。
$ sudo service distcc start
4. (操作マシン側にて) 接続先のホストを、 DISTCC_HOSTS に設定
(例 192.168.1.200 と 192.168.1.201 が処理マシンだった場合 )
$ export DISTCC_HOSTS="localhost 192.168.1.200 192.168.1.201"
5.ビルド
# configure を行う場合 $ CC="ccache distcc gcc" CXX="ccache distcc g++" ./configure # make を行う場合 # # なおこの場合、物理コア数の2倍を同時実行数に指定すると、 # なんかいい感じらしいです。 # # http://distcc.googlecode.com/svn/trunk/doc/web/faq.html # # 今回の場合は、各ノードに 4スレッドの CPU が乗っていて、 # 自分と、それ以外の2台のマシンがあると仮定。 # $ make -j 24 CC="ccache distcc gcc" CXX="ccache distcc g++" HOSTCC="ccache distcc gcc" HOSTCXX="ccache distcc g++"
たぶん、HOSTCC と HOSTCXX の指定は、カーネルビルドの時ぐらいしかいらない気がしなくも。
ついでに、 configure で CC と CXX 指定したら、 make 時はいらなそうな。
とりあえず、自分の備忘録ってことで。メモメモ。
追記事項としては、
ビルド環境のコンパイラとかインクルードファイルとかは一緒にしておいた方がいいよということ。
あわせておかないと、面倒なことになるようです。
ソフト面だけ合っていれば問題なさそうなので、ハードウェア面は、プロセッサのアーキテクチャが違うとか、
そういう系を除けば大丈夫だと思います。