ccache
はコンパイル結果を保存(キャッシュ)し、同じコンパイル処理を行ったときにそれを利用して、再コンパイルを高速化するためのコマンドgit bisect
実行時など、何度も同じコンパイル処理が発生する可能性のある場面では、2回目以降にビルド時間と消費電力を大きく節約できるccache
という名前でインストール可能以下の場合はコンパイル処理は高速化されない。
meson
コマンド実行時の環境変数CC
やCXX
によりコンパイラのコマンド名を直接指定する(ccacheがインストール済みのときにこれをビルドに使用しないための指定例)
$ CC="gcc" CXX="g++" meson ([options...]) [builddir]
ccache
という名前のパッケージを各ディストリのパッケージマネージャでインストールする。もちろん、別途コンパイラのパッケージも必要となる。
既存のコンパイラのコマンド名を置き換えればよいのだが、2通りの方法がある。
ccache [コンパイラのコマンド名]
で既存のコンパイラのコマンド名を置き換える方法。
automake
とautoconf
によるビルドシステム(シェルスクリプトconfigure
が存在するもの)ではconfigure
の実行時に環境変数CC
(C言語)やCXX
(C++言語)を指定する。
$ CC="ccache gcc" CXX="ccache g++" ./configure ([options...])
このビルドシステムでは、make
を実行する際に
$ make CC="ccache gcc" CXX="ccache g++"
のように後ろに記述してconfigure
実行時に指定されたものから変更することも可能。
ディストリによって具体的な場所が異なるが
/usr/lib/ccache/
/usr/lib/ccache/bin/
などのディレクトリにはコンパイラのコマンド名と同じ名前でccache
の場所を指し示すシンボリックリンクが用意されており、これを実行することでもccache
が使用できる。
$ ls /usr/lib/ccache/bin/ -l
合計 0
lrwxrwxrwx 1 root root 15 2007-04-25 20:00 c++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 2007-04-25 20:00 g++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 2007-04-25 20:00 gcc -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 2007-04-25 20:00 x86_64-pc-linux-gnu-c++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 2007-04-25 20:00 x86_64-pc-linux-gnu-g++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 2007-04-25 20:00 x86_64-pc-linux-gnu-gcc -> /usr/bin/ccache
実際の使い方としては、環境変数PATH
の先頭にこのディレクトリが来るようにする。
PATH=/usr/lib/ccache/bin:${PATH} make
この方法では、コンパイラを普通に使うのと同じ感覚でccache
が使える。
[ホームディレクトリ]/.ccache/
以下にデータが保存されるCCACHE_DIR
を指定することで変更もできる(統計情報の参照)
$ ccache -s
(統計情報の削除)
$ ccache -z
(全てのキャッシュを削除・-zと一緒に使うとよい)
$ ccache -C
(キャッシュのファイル数の制限・既定で無効・0で無効)
$ ccache -F 99999
(キャッシュの容量の制限・KiB/MiB/GiB指定可)
$ ccache -M 512M
その他、各種オプションや環境変数、より高度な使い方などはmanページを参照。