ccache

提供: MonoBook
2012年11月1日 (木) 11:00時点における210.255.21.150 (トーク)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

ccache(しーきゃっしゅ)とは、各種コンパイラーが出力するオブジェクトファイルキャッシュし、無駄なコンパイルを省くことで再コンパイルを高速化するシステムである。

ccacheによるキャッシュの判断は、ソースコードでもオブジェクトコードでもなく、プリプロセッサーの出力結果を用いているようである。

ccacheの原作者はsambaの原作者としても有名なアンドリュー・トリジェルである。

対応するコンパイラー[編集 | ソースを編集]

2012年7月18日現在、ccacheがサポートしているプログラミング言語は以下のとおり。

公式サイトを見るといつの間にかObjective-CObjective-C++が増えているという。

UNIXOSで古くから使われる「ccコマンド」と「c++コマンド」への対応が基本となる。gccもこれらのコマンドに対するエイリアスが用意されているので特に考える必要はないと思う。

ccacheのソースコードを見ると、MinGWVisual C++などのWindows環境への対応が試みられた形跡はあるが、2012年7月18日現在では完全体ではなく対応していないと思われる。

ライセンス[編集 | ソースを編集]

ccacheのライセンスGPL v3である。

使い方[編集 | ソースを編集]

FreeBSD[編集 | ソースを編集]

[1]

portsからインストール[編集 | ソースを編集]

FreeBSDではportsが用意されている。

  • devel/ccache

portsから直接インストールする場合は以下のようにする。

# cd /usr/ports/devel/ccache
# make install clean

portupgradeを使っている場合は以下のようにする。 個人的にはこちらを使っており、同時に「-p」オプションを付けることでパッケージも作っておく。

# portinstall -p devel/ccache

/etc/make.confの設定[編集 | ソースを編集]

「/etc/make.conf」を編集し、make実行時にccacheが自動発動する条件を指定しておく。

.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

環境変数の設定:cshの場合[編集 | ソースを編集]

シェルにcshまたはtcshを使っている場合は「/root/.cshrc」を編集しccache関連の環境変数を設定しておく。キャッシュやログの保存場所や適宜設定すること。

setenv PATH /usr/local/libexec/ccache:$PATH
setenv CCACHE_PATH /usr/bin:/usr/local/bin
setenv CCACHE_DIR /var/tmp/ccache
setenv CCACHE_LOGFILE /var/log/ccache.log

上記の設定が完了したのち、sourceコマンドで環境変数を更新する。

# source /root/.cshrc

環境変数の設定:zshの場合[編集 | ソースを編集]

シェルにzshを使っている場合は「/root/.zshrc」を編集しccache関連の環境変数を設定しておく。キャッシュやログの保存場所や適宜設定すること。

export PATH=/usr/local/libexec/ccache:$PATH
export CCACHE_PATH=/usr/bin:/usr/local/bin
export CCACHE_DIR=/var/tmp/ccache
export CCACHE_LOGFILE=/var/log/ccache.log

上記の設定が完了したのち、sourceコマンドで環境変数を更新する。

# source /root/.zshrc

共通[編集 | ソースを編集]

統計情報を見る[編集 | ソースを編集]

以下のコマンドでキャッシュのヒット率などを閲覧することができる。

# ccache -s

統計情報をリセットする[編集 | ソースを編集]

以下のコマンドで統計情報をリセットすることができる。なお統計情報が消えるのであってキャッシュ自体が消えるわけではない。

# ccache -z

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]

外部リンク[編集 | ソースを編集]