「Ccache」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
({{Lowercase title}})
 
(2人の利用者による、間の9版が非表示)
8行目: 8行目:
 
{{Related|Distcc}}
 
{{Related|Distcc}}
 
{{Related articles end}}
 
{{Related articles end}}
  +
{{Ic|ccache}} は、コンパイルされたバイナリをディスクに保存し、同じコードの最終的な再コンパイルを高速化するためにそれらを提供するコンパイラ ラッパーです。初めてプログラムをコンパイルするのに数秒長くかかる場合がありますが、適切なコンパイルは行われず、以前に保存されたバイナリを参照するだけなので、その後のコンパイルははるかに高速になります。 {{ic|ccache}} は [[GCC]] および [[Clang]] と互換性があります。
{{Ic|gcc}} のための素敵なツール、それが {{Ic|ccache}} です。ccache の説明は [http://ccache.samba.org ホームページ] にあります。
 
 
同じプログラムを何度もコンパイルするような場合 (複数のカーネルパッチを試してみたり、ソフトウェアの開発でテストしたりするような場合など) に、{{Ic|ccache}} はうってつけです。{{Ic|ccache}} でプログラムをコンパイルすると最初は数秒だけ長く時間がかかりますが、それ以降のコンパイルはずっと早くなります。
 
 
 
== インストール ==
 
== インストール ==
   
22行目: 19行目:
 
# ユーザー個別の設定ファイル ({{ic|$HOME/.ccache/ccache.conf}})
 
# ユーザー個別の設定ファイル ({{ic|$HOME/.ccache/ccache.conf}})
 
# 全ユーザー共通の設定ファイル ({{ic|/etc/ccache.conf}})
 
# 全ユーザー共通の設定ファイル ({{ic|/etc/ccache.conf}})
  +
  +
詳細は、{{man|1|ccache}} を参照してください。
   
 
=== 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|
 
{{hc|1=/etc/makepkg.conf|
2=BUILDENV=(fakeroot !distcc color '''ccache''' check !sign)}}
+
2=BUILDENV=(!distcc color '''ccache''' check !sign)}}
 
{{Note|KDE などをコンパイルする場合は CPP や CXX の export を無効にする必要があります、それでいくつかのエラーを止めることができます。}}
 
   
 
=== コマンドラインで有効にする ===
 
=== コマンドラインで有効にする ===
  +
 
パッケージを作成するのではなく、コマンドラインからコードをコンパイルするとき、{{Ic|ccache}} を使うことでコンパイル速度を向上させることができます。
 
パッケージを作成するのではなく、コマンドラインからコードをコンパイルするとき、{{Ic|ccache}} を使うことでコンパイル速度を向上させることができます。
   
そのためには、{{Ic|$PATH}} に {{Ic|ccache}} のバイナリ(コンパイラのパスの前に)含むようにする必要があります。
+
そのためには、各コンパイルコマンドの前に {{Ic|ccache}} を付けます。
  +
  +
$ ccache cc hello_world.c
  +
  +
または、コンパイラへのパスの前に ''ccache'' のバイナリを含むように {{Ic|$PATH}} を変更します:
   
 
$ export PATH="/usr/lib/ccache/bin/:$PATH"
 
$ export PATH="/usr/lib/ccache/bin/:$PATH"
   
定期的に使う場合は {{ic|~/.bashrc}} ファイルこの行を加えると良いでょう
+
この行を定期的に使用するため[[環境変数]]として設定すをお勧めます
   
{{Note|上記設定をすると makepkg でも ccache 有効になります。}}
+
{{Note|このようなエクスポートは、こPATH で呼び出された場合に ''makepkg'' でも必然的に ''ccache'' 有効にます。}}
   
 
=== colorgcc で有効にする ===
 
=== colorgcc で有効にする ===
55行目: 57行目:
 
f77:/usr/bin/g77
 
f77:/usr/bin/g77
 
gcj:/usr/bin/gcj}}
 
gcj:/usr/bin/gcj}}
  +
  +
新しいバージョンの ''ccache'' では、{{ic|GCC_COLORS}} が設定されている場合、GCC については常に色を有効にします。Clang についてはデフォルトで色が有効です。出力が TTY でない場合、''ccache'' はコンパイラに色を生成させ、キャッシュに保存しますが、出力からは色を取り除きます。[https://github.com/ccache/ccache/issues/224 -fdiagnostics-color] の統一に関するいくつかの問題が残っています。
   
 
== その他 ==
 
== その他 ==
  +
  +
=== 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] セクションを参照してください。
  +
 
=== キャッシュディレクトリを変更する ===
 
=== キャッシュディレクトリを変更する ===
  +
 
デフォルトの {{ic|~/.ccache}} ディレクトリから、[[SSD]] や [[fstab#tmpfs|RAM ディスク]]などの高速にアクセス可能な場所にキャッシュディレクトリを移動することができます。
 
デフォルトの {{ic|~/.ccache}} ディレクトリから、[[SSD]] や [[fstab#tmpfs|RAM ディスク]]などの高速にアクセス可能な場所にキャッシュディレクトリを移動することができます。
   
69行目: 87行目:
   
 
=== 最大キャッシュ容量の設定 ===
 
=== 最大キャッシュ容量の設定 ===
  +
 
デフォルトでは5ギガバイトとなっていますが、多くしたり少なくしたりすることができます:
 
デフォルトでは5ギガバイトとなっていますが、多くしたり少なくしたりすることができます:
   
 
$ ccache --set-config=max_size=2.0G
 
$ ccache --set-config=max_size=2.0G
 
もしくは:
 
 
{{hc|1=$HOME/.ccache/ccache.conf|
 
2=max_size = 2.0G}}
 
   
 
=== 環境変数でキャッシュを無効化 ===
 
=== 環境変数でキャッシュを無効化 ===
84行目: 98行目:
   
 
=== CLI ===
 
=== CLI ===
  +
 
ccache のコマンドラインユーティリティを使うことで以下の操作ができます。
 
ccache のコマンドラインユーティリティを使うことで以下の操作ができます。
   
93行目: 108行目:
   
 
=== makechrootpkg ===
 
=== makechrootpkg ===
  +
 
makechrootpkg で ccache を使うこともできます。makechrootpkg の {{ic|-d}} オプションを使うことで通常の環境から chroot にキャッシュディレクトリをバインドすることが可能です:
 
makechrootpkg で ccache を使うこともできます。makechrootpkg の {{ic|-d}} オプションを使うことで通常の環境から chroot にキャッシュディレクトリをバインドすることが可能です:
 
$ mkdir /path/of/chroot/ccache
 
$ mkdir /path/of/chroot/ccache
 
$ makechrootpkg -d /path/to/cache/:/ccache -r /path/of/chroot -- CCACHE_DIR=/ccache
 
$ makechrootpkg -d /path/to/cache/:/ccache -r /path/of/chroot -- CCACHE_DIR=/ccache
 
上記で説明しているように chroot でも ccache が使われるように設定してください。
 
上記で説明しているように chroot でも ccache が使われるように設定してください。
  +
  +
== 注意点 ==
  +
  +
''ccache'' は'''完全に同一の'''ソースをコンパイルする際に'''のみ'''効果的です(より正確には、プリプロセスされたソースに対してです)。
  +
  +
Gentoo Linux コミュニティでは、ソースベースのディストリビューションであるため、''ccache'' はプラセボ効果やコンパイル失敗(望ましくない残留オブジェクトによる)などで悪名高いです。Gentoo では、コンパイル失敗を報告する前に ''ccache'' をオフにすることが要求されます。[[Gentoo:Handbook:Parts/Working/Features#Caching compilation objects]] および Diego Pettenò(元 Gentoo 開発者)による "Debunking ccache myths" と題されたブログ投稿 [https://flameeyes.blog/2008/06/21/debunking-ccache-myths/ the blog post] を参照してください。
   
 
== 参照 ==
 
== 参照 ==
   
 
*[http://ccache.samba.org/manual.html ccache マニュアル]
 
*[http://ccache.samba.org/manual.html ccache マニュアル]
  +
  +
{{TranslationStatus|Ccache|2024-05-08|795404}}

2024年5月8日 (水) 18:38時点における最新版

関連記事

ccache は、コンパイルされたバイナリをディスクに保存し、同じコードの最終的な再コンパイルを高速化するためにそれらを提供するコンパイラ ラッパーです。初めてプログラムをコンパイルするのに数秒長くかかる場合がありますが、適切なコンパイルは行われず、以前に保存されたバイナリを参照するだけなので、その後のコンパイルははるかに高速になります。 ccacheGCC および Clang と互換性があります。

インストール

ccache パッケージをインストールしてください。

設定

設定ファイルを使うことでデフォルトの挙動を上書きできます。設定の優先順位は以下の通りです (優先順位の高いものから並べています):

  1. 環境変数
  2. ユーザー個別の設定ファイル ($HOME/.ccache/ccache.conf)
  3. 全ユーザー共通の設定ファイル (/etc/ccache.conf)

詳細は、ccache(1) を参照してください。

makepkg で ccache を有効にする

makepkg の使用時に ccache を有効にするには /etc/makepkg.conf を編集して下さい。BUILDENV の中の ccache の前のエクスクラメーションマークを除去すれば有効になります。例:

/etc/makepkg.conf
BUILDENV=(!distcc color ccache check !sign)

コマンドラインで有効にする

パッケージを作成するのではなく、コマンドラインからコードをコンパイルするとき、ccache を使うことでコンパイル速度を向上させることができます。

そのためには、各コンパイルコマンドの前に ccache を付けます。

$ ccache cc hello_world.c

または、コンパイラへのパスの前に ccache のバイナリを含むように $PATH を変更します:

$ export PATH="/usr/lib/ccache/bin/:$PATH"

この行を定期的に使用するために環境変数として設定することをお勧めします。

ノート: このようなエクスポートは、この PATH で呼び出された場合に makepkg でも必然的に ccache を有効にします。

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

新しいバージョンの ccache では、GCC_COLORS が設定されている場合、GCC については常に色を有効にします。Clang についてはデフォルトで色が有効です。出力が TTY でない場合、ccache はコンパイラに色を生成させ、キャッシュに保存しますが、出力からは色を取り除きます。-fdiagnostics-color の統一に関するいくつかの問題が残っています。

その他

Sloppiness

ccache はデフォルトで、誤検知と、一部のプロジェクトでは実際の検知の両方を最小限に抑える非常に保守的な比較を使用します。一部の比較は役に立たないとみなされるため、変更できます。

$ ccache --set-config=sloppiness=locale,time_macros

これは、ccache__FILE__ および時間関連のマクロを無視するように指示します。これらのマクロは通常、キャッシュを無効にし、再現性のあるビルドでは有害であると考えられます。ロケールの違いも無視されます。ccache がこれを考慮するのは、主に診断メッセージの言語を決定するためです。

CCACHE_SLOPPINESS 環境変数をエクスポートして、既存の sloppiness 設定をオーバーライドできます。

また、ccache は、デフォルトで各ビルドに使用されている現在のディレクトリをキャッシュします。これは、呼び出されるたびに新しいランダムな一時ディレクトリを使用するビルドパイプラインのキャッシュミスを意味します。ccache マニュアルの Compiling in different directories セクションを参照してください。

キャッシュディレクトリを変更する

デフォルトの ~/.ccache ディレクトリから、SSDRAM ディスクなどの高速にアクセス可能な場所にキャッシュディレクトリを移動することができます。

キャッシュの位置を変更するには (現在のシェルでのみ有効):

$ export CCACHE_DIR=/ramdisk/ccache

あるいは永続的に位置を変更するには:

/home/user/.ccache/ccache.conf
cache_dir = /ramdisk/ccache

最大キャッシュ容量の設定

デフォルトでは5ギガバイトとなっていますが、多くしたり少なくしたりすることができます:

$ ccache --set-config=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 が使われるように設定してください。

注意点

ccache完全に同一のソースをコンパイルする際にのみ効果的です(より正確には、プリプロセスされたソースに対してです)。

Gentoo Linux コミュニティでは、ソースベースのディストリビューションであるため、ccache はプラセボ効果やコンパイル失敗(望ましくない残留オブジェクトによる)などで悪名高いです。Gentoo では、コンパイル失敗を報告する前に ccache をオフにすることが要求されます。Gentoo:Handbook:Parts/Working/Features#Caching compilation objects および Diego Pettenò(元 Gentoo 開発者)による "Debunking ccache myths" と題されたブログ投稿 the blog post を参照してください。

参照

翻訳ステータス: このページは en:Ccache の翻訳バージョンです。最後の翻訳日は 2024-05-08 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。