distcc
当然ながら、クライアントとサーバーでは、同じバージョンのgccを入れる必要がある。このへんからすでにSHはめんどくさいことになっている。
複数のリビジョンのgccがあるときは、クライアントのgccを基準にサーバー側をあわせる。コンパイラのバイナリのファイル名については、両方でそろえておく必要があり、これはシンボリックリンクでもかまわない。
クロスコンパイルには、binutils, glibc, kernel-headerも必要になる(いらないはずなんだけど下記のgentooにはそう書いてあるな?)。
- Distcc で分散コンパイル
http://www.smalltown.ne.jp/~usata/memo/distcc.shtml
よくまとまっているのだけど、Gentooベースというところがいまいちだ。
- distccでコンパイル時間を削減する
http://www-6.ibm.com/jp/developerworks/linux/040716/j_l-distcc.html
DISTCC_DIRをtmpfsとかに指定してしまうと、RAM上で構築できるようになりそうね。
コンパイルに参加するメンバサーバーを環境変数で指定する。ならんだ順にタスクが振られるので、速いマシンを先頭にすべきだそうだ。
export DISTCC_HOSTS="fts-distcc lantank"
SHの場合は、メインマシンはコンパイルに参加させないほうが快適らしい。
やっぱり、dpkg-cross が SH ではうまく使えないから、クロス環境をそろえるのはめんどくさいので、標準配布物に distcc を突っ込んでおき、なんかボタンを押してポートを外にあけると、ssh経由でコンパイルファームに参加できるような仕組みを用意すべきではないのかな。