2004-11-29

ccacheとdistccでビルドを高速に

Last updated $Date: 2006/07/03 06:49:13 $

ccacheとdistcc

カーネル再構築の時や、開発中など同じソースコードを何度もビルドする事が良くあります。ccacheを使うとコンパイラのプリプロセスした結果を保存して、再利用することができます。

distccを使うとネットワーク上の複数のホストでビルドを分担することができます。ccahceと同時に使用できます。(各ホストでコンパイラのバージョンをあわせておく必要があります)

インストール

portupgradeを使ってインストールする。普通にportsからmake installしても良い。

# portinstall devel/ccache devel/distcc

cacheディレクトリの設定

デフォルトでは${HOME}/.ccacheにキャッシュするので、余裕のあるディレクトリを指定する。 ここでは/usr/local/var/.ccacheを使用する場合を説明する。

# mkdir -p /usr/local/var/.ccache

ディレクトリはCCACHE_DIR環境変数で指定する。

CCACHE_DIR=/usr/local/var/.ccache

distccのホストを指定

DISTCC_HOSTS環境変数でビルドを割り振るホストを指定します。 名前解決できるホスト名かIPアドレスを列記しましょう。 割り振り先のホストではdistccdをあらかじめ起動しておく必要があります。/etc/rc.confにdistccd_enable="YES"を設定しておきます。(最近のバージョンではssh経由での動作も出来るようです) CCACHE_PREFIXでdistccを指定することでccacheと同時に使用できます。

環境変数の指定

/etc/make.confに記入する。

.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*)) && !defined(NOCCACHE)
CC=/usr/local/libexec/ccache/world-cc
CXX=/usr/local/libexec/ccache/world-c++
.endif

/etc/csh.cshrc

setenv PATH /usr/local/libexec/ccache/:$PATH
setenv CCACHE_PATH /usr/bin:/usr/local/bin
setenv CCACHE_DIR /usr/local/var/.ccache
setenv CCACHE_LOGFILE /var/log/ccache.log
#To use distcc
CCACHE_PREFIX /usr/local/bin/distcc
DISTCC_HOSTS 'localhost host1 host2 host3'

host1 host2 host3は自分の環境に合わせて。詳しくはdistccのマニュアルを参照。

ビルドしてみる

この設定が出来た状態で、普通にportsやカーネルをmake buildkernelすれば使用できます。 distccを使う場合は

# cd /usr/src
# make -j4 buildkernel

というふうに-jオプションを指定するか、MAKEOPTS=4などと環境変数に指定して並列にビルドすると効率的です。

参考url

ccache

distcc

dW : Linux : distccでコンパイル時間を削減する

Permanent link | Trackback | | このエントリーを含むはてなブックマーク livedoor Clip View blog reactions del.icio.us

otsune posted at 06:57 in
WriteBacks
TrackBack ping me at
http://www.otsune.com/bsd/ports/ccache_distcc.
Post a comment

writeback message: