distccでクロスコンパイル
注:コンパイルするマシンをlocal、localとは別のマシンをremoteとする。localはremoteに比べてかなり非力な状況を想定している。
1.まずlocal,remote両方の環境にdistccをインストールする。
2.local側では/usr/lib/distcc/にdistccのシンボリックリンクをgcc,cc,g++,c++という名前で作ってパスの先頭に入れる。
3.remote側ではdistccdをユーザ権限で起動する。デフォルトでは3632ポートで待ち受けることになる。このときgcc,cc,g++,c++がクロスコンパイル用のコンパイラを指すようにパスやシンボリックリンクを調整する。
4.コンパイルを始める前にlocalからremoteへsshでトンネルを掘っておく
% ssh -L 3632:localhost:3632 remote
5.localで環境変数を設定する
DISTCC_HOSTS=127.0.0.1 PATH=/usr/lib/ccache:/usr/lib/distcc:$PATH MAKEFLAGS=-j8
これで普通にビルドすると、プリプロセス、コンパイル、アセンブル、リンクのうちコンパイルとアセンブルをremoteでやるようになる。
ちなみに4はなんのためにやっているかというと、毎回sshのセッションを張るのもlocalにとっては重い処理だから。