distccでクロスコンパイル

これまでに母艦のMacLS-GL本体の環境にコンパイル環境は作ったのですが、やはり母艦の方が速いので、なるべく母艦側でコンパイルを流したいのですが、一方でクロスコンパイルに対応していないソースコードも多くあります。
こんなとき、distccを使って、configureやmakeのスクリプトは本体で流し、gccは母艦で動かすと言う手が有効です。
ということで、distccで本体側でクロスコンパイルを実行できるようにしてみました。
ソースは http://distcc.samba.org/download.html から最新版を。
まず、distccを両方共にインストール。手順はそれぞれで ./configure && make && make install するだけです。
次に、LS-GL側のdistccディレクトリを適当な場所(ホームディレクトリあたり)に作成し、以下のようなスクリプトを配置します。

% cat distcc-wrapper.sh
#!/bin/bash
exec $HOME/distcc/arm-none-linux-gnueabi-${0##*/} "$@"

さらに、同ディレクトリに次のようにシンボリックリンクを貼ります。

lrwxrwxrwx    1 NeoCat hdusers        21 Dec 17 22:51 arm-none-linux-gnueabi-c++ -> /usr/local/bin/distcc
lrwxrwxrwx    1 NeoCat hdusers        21 Dec 17 22:51 arm-none-linux-gnueabi-g++ -> /usr/local/bin/distcc
lrwxrwxrwx    1 NeoCat hdusers        21 Dec 17 22:51 arm-none-linux-gnueabi-gcc -> /usr/local/bin/distcc
lrwxrwxrwx    1 NeoCat hdusers        17 Dec 17 22:49 c++ -> distcc-wrapper.sh
-rwxr-xr-x    1 NeoCat hdusers       140 Dec 17 22:59 distcc-wrapper.sh
lrwxrwxrwx    1 NeoCat hdusers        17 Dec 17 22:49 g++ -> distcc-wrapper.sh
lrwxrwxrwx    1 NeoCat hdusers        17 Dec 17 22:48 gcc -> distcc-wrapper.sh

これは、「gcc」が実行された際、母艦側の名前に直した上でdistccを呼び出すことにより、母艦側のコマンドを適切に実行できるようにするための細工です。参考:Gentoo Linux - DistCC クロスコンパイルガイド
インストールは以上で完了。

distccを使って実行するには、まず母艦側で

distccd --allow 192.168.0.0/24 --daemon

としてdistccデーモンを起動しておきます。IPアドレスは環境に合わせて適当に。あとはLS-GL側では

% export PATH=$HOME/distcc:$PATH
% export DISTCC_HOSTS=192.168.0.x (母艦のIPアドレス)

として、先ほど作ったdistccディレクトリにPATHを優先的に通し、母艦のIPを指定します。
あとは、make -j4 などと適当にジョブ数を増やしてmakeを流すようにすればOKです。
LS-GL上で watch distccmon-text を実行しておけば、分散状況が分かります。