「Ccache」の版間の差分
細 (1版 をインポートしました) |
(→その他: Sloppinessを翻訳して追加) |
||
(2人の利用者による、間の8版が非表示) | |||
1行目: | 1行目: | ||
+ | {{Lowercase title}} |
||
− | [[Category:パッケージ開発] |
||
+ | [[Category:パッケージ開発]] |
||
[[en:Ccache]] |
[[en:Ccache]] |
||
− | [[ |
+ | [[pt:Ccache]] |
+ | [[zh-hans:Ccache]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
− | {{ |
+ | {{Related|Makepkg}} |
− | {{ |
+ | {{Related|Distcc}} |
{{Related articles end}} |
{{Related articles end}} |
||
{{Ic|gcc}} のための素敵なツール、それが {{Ic|ccache}} です。ccache の説明は [http://ccache.samba.org ホームページ] にあります。 |
{{Ic|gcc}} のための素敵なツール、それが {{Ic|ccache}} です。ccache の説明は [http://ccache.samba.org ホームページ] にあります。 |
||
12行目: | 14行目: | ||
== インストール == |
== インストール == |
||
− | + | {{pkg|ccache}} パッケージを[[pacman|インストール]]してください。 |
|
+ | |||
+ | == 設定 == |
||
+ | |||
+ | 設定ファイルを使うことでデフォルトの挙動を上書きできます。設定の優先順位は以下の通りです (優先順位の高いものから並べています): |
||
+ | # 環境変数 |
||
+ | # ユーザー個別の設定ファイル ({{ic|$HOME/.ccache/ccache.conf}}) |
||
+ | # 全ユーザー共通の設定ファイル ({{ic|/etc/ccache.conf}}) |
||
=== makepkg で ccache を有効にする === |
=== makepkg で ccache を有効にする === |
||
makepkg の使用時に ccache を有効にするには {{ic|/etc/makepkg.conf}} を編集して下さい。{{Ic|BUILDENV}} の中の ccache の前のエクスクラメーションマークを除去すれば有効になります。例: |
makepkg の使用時に ccache を有効にするには {{ic|/etc/makepkg.conf}} を編集して下さい。{{Ic|BUILDENV}} の中の ccache の前のエクスクラメーションマークを除去すれば有効になります。例: |
||
+ | {{hc|1=/etc/makepkg.conf| |
||
− | BUILDENV=(fakeroot !distcc color ccache !xdelta) |
||
+ | 2=BUILDENV=(fakeroot !distcc color '''ccache''' check !sign)}} |
||
{{Note|KDE などをコンパイルする場合は CPP や CXX の export を無効にする必要があります、それでいくつかのエラーを止めることができます。}} |
{{Note|KDE などをコンパイルする場合は CPP や CXX の export を無効にする必要があります、それでいくつかのエラーを止めることができます。}} |
||
25行目: | 35行目: | ||
そのためには、{{Ic|$PATH}} に {{Ic|ccache}} のバイナリを(コンパイラのパスの前に)含むようにする必要があります。 |
そのためには、{{Ic|$PATH}} に {{Ic|ccache}} のバイナリを(コンパイラのパスの前に)含むようにする必要があります。 |
||
− | export PATH="/usr/lib/ccache/bin/:$PATH" |
+ | $ export PATH="/usr/lib/ccache/bin/:$PATH" |
定期的に使う場合は {{ic|~/.bashrc}} ファイルにこの行を加えると良いでしょう。 |
定期的に使う場合は {{ic|~/.bashrc}} ファイルにこの行を加えると良いでしょう。 |
||
+ | |||
+ | {{Note|上記の設定をすると makepkg でも ccache が有効になります。}} |
||
=== colorgcc で有効にする === |
=== colorgcc で有効にする === |
||
45行目: | 57行目: | ||
== その他 == |
== その他 == |
||
+ | |||
+ | === Sloppiness === |
||
+ | |||
+ | ''ccache'' はデフォルトで、誤検知と、一部のプロジェクトでは実際の検知の両方を最小限に抑える非常に保守的な比較を使用します。一部の比較は役に立たないとみなされるため、変更できます。 |
||
+ | |||
+ | $ ccache --set-config=sloppiness=locale,time_macros |
||
+ | |||
+ | これは、''ccache'' に {{ic|__FILE__}} および時間関連のマクロを無視するように指示します。これらのマクロは通常、キャッシュを無効にし、[[再現性のあるビルド]]では有害であると考えられます。ロケールの違いも無視されます。''ccache'' がこれを考慮するのは、主に診断メッセージの言語を決定するためです。 |
||
+ | |||
+ | {{ic|CCACHE_SLOPPINESS}} [[環境変数]]をエクスポートして、既存の sloppiness 設定をオーバーライドできます。 |
||
+ | |||
+ | また、''ccache'' は、デフォルトで各ビルドに使用されている現在のディレクトリをキャッシュします。これは、呼び出されるたびに新しいランダムな一時ディレクトリを使用するビルドパイプラインのキャッシュミスを意味します。''ccache'' マニュアルの [https://ccache.dev/manual/latest.html#_compiling_in_Difference_directories Compiling in different directories] セクションを参照してください。 |
||
+ | |||
=== キャッシュディレクトリを変更する === |
=== キャッシュディレクトリを変更する === |
||
− | デフォルトの "~/.ccache" ディレクトリから、[[SSD|SSD]] や [[fstab#tmpfs|RAM ディスク]]などの高速にアクセス可能な場所にキャッシュディレクトリを移動することができます。 |
||
+ | デフォルトの {{ic|~/.ccache}} ディレクトリから、[[SSD]] や [[fstab#tmpfs|RAM ディスク]]などの高速にアクセス可能な場所にキャッシュディレクトリを移動することができます。 |
||
− | キャッシュの位置を変更するには: |
||
+ | |||
− | export CCACHE_DIR=/ramdisk/ccache # Tell ccache to use this path to store its cache |
||
+ | キャッシュの位置を変更するには (現在のシェルでのみ有効): |
||
+ | $ export CCACHE_DIR=/ramdisk/ccache |
||
+ | |||
+ | あるいは永続的に位置を変更するには: |
||
+ | |||
+ | {{hc|1=/home/''user''/.ccache/ccache.conf| |
||
+ | 2=cache_dir = /ramdisk/ccache}} |
||
+ | |||
+ | === 最大キャッシュ容量の設定 === |
||
+ | |||
+ | デフォルトでは5ギガバイトとなっていますが、多くしたり少なくしたりすることができます: |
||
+ | |||
+ | $ ccache --set-config=max_size=2.0G |
||
+ | |||
+ | もしくは: |
||
+ | |||
+ | {{hc|1=$HOME/.ccache/ccache.conf| |
||
+ | 2=max_size = 2.0G}} |
||
+ | |||
+ | === 環境変数でキャッシュを無効化 === |
||
+ | |||
+ | 現在のシェルでのみ CCache を無効化したい場合、以下を設定: |
||
+ | $ export CCACHE_DISABLE=1 |
||
=== CLI === |
=== CLI === |
||
+ | |||
ccache のコマンドラインユーティリティを使うことで以下の操作ができます。 |
ccache のコマンドラインユーティリティを使うことで以下の操作ができます。 |
||
59行目: | 107行目: | ||
キャッシュを完全に削除する: |
キャッシュを完全に削除する: |
||
$ ccache -C |
$ ccache -C |
||
+ | |||
+ | === makechrootpkg === |
||
+ | |||
+ | makechrootpkg で ccache を使うこともできます。makechrootpkg の {{ic|-d}} オプションを使うことで通常の環境から chroot にキャッシュディレクトリをバインドすることが可能です: |
||
+ | $ mkdir /path/of/chroot/ccache |
||
+ | $ makechrootpkg -d /path/to/cache/:/ccache -r /path/of/chroot -- CCACHE_DIR=/ccache |
||
+ | 上記で説明しているように chroot でも ccache が使われるように設定してください。 |
||
== 参照 == |
== 参照 == |
||
− | *[http://ccache.samba.org/ ccache ホームページ] |
||
*[http://ccache.samba.org/manual.html ccache マニュアル] |
*[http://ccache.samba.org/manual.html ccache マニュアル] |
2024年2月23日 (金) 07:01時点における最新版
gcc
のための素敵なツール、それが ccache
です。ccache の説明は ホームページ にあります。
同じプログラムを何度もコンパイルするような場合 (複数のカーネルパッチを試してみたり、ソフトウェアの開発でテストしたりするような場合など) に、ccache
はうってつけです。ccache
でプログラムをコンパイルすると最初は数秒だけ長く時間がかかりますが、それ以降のコンパイルはずっと早くなります。
目次
インストール
設定
設定ファイルを使うことでデフォルトの挙動を上書きできます。設定の優先順位は以下の通りです (優先順位の高いものから並べています):
- 環境変数
- ユーザー個別の設定ファイル (
$HOME/.ccache/ccache.conf
) - 全ユーザー共通の設定ファイル (
/etc/ccache.conf
)
makepkg で ccache を有効にする
makepkg の使用時に ccache を有効にするには /etc/makepkg.conf
を編集して下さい。BUILDENV
の中の ccache の前のエクスクラメーションマークを除去すれば有効になります。例:
/etc/makepkg.conf
BUILDENV=(fakeroot !distcc color ccache check !sign)
コマンドラインで有効にする
パッケージを作成するのではなく、コマンドラインからコードをコンパイルするとき、ccache
を使うことでコンパイル速度を向上させることができます。
そのためには、$PATH
に ccache
のバイナリを(コンパイラのパスの前に)含むようにする必要があります。
$ export PATH="/usr/lib/ccache/bin/:$PATH"
定期的に使う場合は ~/.bashrc
ファイルにこの行を加えると良いでしょう。
colorgcc で有効にする
colorgcc もコンパイララッパーなので、正しい順番でラッパーが呼ばれるように注意する必要があります。
export PATH="/usr/lib/colorgcc/bin/:$PATH" # As per usual colorgcc installation, leave unchanged (don't add ccache) export CCACHE_PATH="/usr/bin" # Tell ccache to only use compilers here
そして本当のコンパイラの代わりに ccache を呼び出すように colorgcc を設定してください。/etc/colorgcc/colorgccrc
を編集し /usr/bin
のパスを /usr/lib/ccache/bin
にある全てのコンパイラに対応するように /usr/lib/ccache/bin
のパスに変更します:
/etc/colorgcc/colorgccrc
g++: /usr/lib/ccache/bin/g++ gcc: /usr/lib/ccache/bin/gcc c++: /usr/lib/ccache/bin/g++ cc: /usr/lib/ccache/bin/cc g77:/usr/bin/g77 f77:/usr/bin/g77 gcj:/usr/bin/gcj
その他
Sloppiness
ccache はデフォルトで、誤検知と、一部のプロジェクトでは実際の検知の両方を最小限に抑える非常に保守的な比較を使用します。一部の比較は役に立たないとみなされるため、変更できます。
$ ccache --set-config=sloppiness=locale,time_macros
これは、ccache に __FILE__
および時間関連のマクロを無視するように指示します。これらのマクロは通常、キャッシュを無効にし、再現性のあるビルドでは有害であると考えられます。ロケールの違いも無視されます。ccache がこれを考慮するのは、主に診断メッセージの言語を決定するためです。
CCACHE_SLOPPINESS
環境変数をエクスポートして、既存の sloppiness 設定をオーバーライドできます。
また、ccache は、デフォルトで各ビルドに使用されている現在のディレクトリをキャッシュします。これは、呼び出されるたびに新しいランダムな一時ディレクトリを使用するビルドパイプラインのキャッシュミスを意味します。ccache マニュアルの Compiling in different directories セクションを参照してください。
キャッシュディレクトリを変更する
デフォルトの ~/.ccache
ディレクトリから、SSD や RAM ディスクなどの高速にアクセス可能な場所にキャッシュディレクトリを移動することができます。
キャッシュの位置を変更するには (現在のシェルでのみ有効):
$ export CCACHE_DIR=/ramdisk/ccache
あるいは永続的に位置を変更するには:
/home/user/.ccache/ccache.conf
cache_dir = /ramdisk/ccache
最大キャッシュ容量の設定
デフォルトでは5ギガバイトとなっていますが、多くしたり少なくしたりすることができます:
$ ccache --set-config=max_size=2.0G
もしくは:
$HOME/.ccache/ccache.conf
max_size = 2.0G
環境変数でキャッシュを無効化
現在のシェルでのみ CCache を無効化したい場合、以下を設定:
$ export CCACHE_DISABLE=1
CLI
ccache のコマンドラインユーティリティを使うことで以下の操作ができます。
統計を表示する:
$ ccache -s
キャッシュを完全に削除する:
$ ccache -C
makechrootpkg
makechrootpkg で ccache を使うこともできます。makechrootpkg の -d
オプションを使うことで通常の環境から chroot にキャッシュディレクトリをバインドすることが可能です:
$ mkdir /path/of/chroot/ccache $ makechrootpkg -d /path/to/cache/:/ccache -r /path/of/chroot -- CCACHE_DIR=/ccache
上記で説明しているように chroot でも ccache が使われるように設定してください。