Oct 20, 2009
玄箱HG NetBSD distcc で混合pkgsrc作成環境 [computer]
NetBSDのベースシステムはクロスビルドが簡単にできるようになっているがpkgsrcはそれほど簡単ではない。
pkgsrcはdistccに対応しているのでdistccを使ってホストPC側のクロスコンパイラを使うようにすることができる。configure等は玄箱上のセルフ環境で行うのですべてが速くなるわけではないが、pkgsrcがかなり「使える」ようになる。
- ホストPC側の設定
distccdを高速なホストPC側で動かす。distccのマニュアルによればdistccでクロスコンパイルを行う場合はターゲットアーキテクチャ用のクロスコンパイラを規則に従った名前にして...等あるが、ここではNetBSDのpkgsrcで使う関係上別の方法で対応する。
ホスト側のコンパイラはNetBSDベースシステムのクロスビルドで使用したtoolchainのコンパイラを利用する。
例えば/usr/local/evbppc/toolchain/bin以下にクロスコンパイラがあるとする。 (toolchainの作成時に例えば、
# ./build.sh -T /usr/local/evbppc/toolchain -m evbppc等で作成しておく)
# cd /usr/local/evbppc/toolchain/bin # ln -s powerpc--netbsd-gcc gcc # ln -s powerpc--netbsd-gcc cc # ln -s powerpc--netbsd-g++ g++ # ln -s powerpc--netbsd-c++ c++
distccdの起動時にPATHをクロスコンパイラのあるディレクトリにしておくようにする。 例えばホストのIPアドレスが 192.168.1.129 であるとして起動スクリプトで
#!/bin/sh PATH=/usr/local/evbppc/toolchain/bin distccd -a 192.168.1.0/24 --user distcc --daemon \ -P /var/run/distcc.pid --listen 192.168.1.129など。
ちなみにホストPC側がFreeBSDの場合、portsからdistccをインストールするとデフォルトではIPv6のアドレスに対してbindされるためIPv4でネットワークを構築している場合、上記のように--listenでIPv4のアドレスを指定しないと使えない場合がある。
NetBSDのpkgsrcでコンパイラにdistccを使う場合なら/etc/mk.confに以下のような記述を 入れておけばよい。DISTCC_HOSTSはdistccでコンパイル行うホストのアドレスを書いておく(distccのマニュアル参照)。
PKGSRC_COMPILER= distcc gcc DISTCC_HOSTS= 192.168.1.129
blosxom 2.0
and
modified by
blosxom starter kit