ccacheを設定するにはどうすればよいですか?


36

ccacheを使用してコンパイルを高速化したい。

私が出会ったどのように私はccacheを有効にするには?

これは私がこれまでにやったことです:

$ sudo apt-get install -y ccache
$ dpkg -l ccache
ii  ccache  3.1.6-1   Compiler cache for fast recompilation of C/C++ code
$ whereis ccache
ccache: /usr/bin/ccache /usr/lib/ccache /usr/bin/X11/ccache /usr/share/man/man1/ccache.1.gz

ファイルに追加ccacheしてパスに追加しました~/.bashrc

$ export PATH="/usr/lib/ccache:$PATH"
$ source ~/.bashrc
$ echo $PATH
/usr/lib/ccache:/usr/local/cuda-5.5/bin/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

シンボリックリンクは正常に見えます。

$ ll /usr/lib/ccache/
total 76
drwxr-xr-x   2 root root  4096 mai   22 10:48 ./
drwxr-xr-x 253 root root 69632 mai   22 10:48 ../
lrwxrwxrwx   1 root root    16 mai   22 10:48 avr-g++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 avr-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 avr-gcc-4.5.3 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 c++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 c89-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 c99-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 cc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 g++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 g++-4.6 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 gcc-4.6 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-g++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-g++-4.6 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-gcc-4.6 -> ../../bin/ccache*

リンクは良さそうです:

$ which g++
/usr/lib/ccache/g++

$ make
g++ -o affine_euler affine_euler.cpp -O3 -DEIGEN_NO_DEBUG -I/usr/include/eigen3
g++ -o test_eigen test_eigen.cpp -O3 -DEIGEN_NO_DEBUG -I/usr/include/eigen3

ただし、キャッシュは空です。

$ ccache -s
cache directory                     /home/dell/.ccache
cache hit (direct)                     0
cache hit (preprocessed)               0
cache miss                             0
files in cache                         0
cache size                             0 Kbytes
max cache size                       1.0 Gbytes

私はどこが間違っていますか?


一般的なケースでは機能するが、メイクファイルでは機能しないことに気付きました(たとえば、cmakeで機能します)。だから私は問題がメイクファイルにあり、ccacheの設定にあるとは思いません。
ビクターラモイン

回答:


45

インストール:

# Install package
sudo apt install -y ccache

# Update symlinks
sudo /usr/sbin/update-ccache-symlinks

# Prepend ccache into the PATH
echo 'export PATH="/usr/lib/ccache:$PATH"' | tee -a ~/.bashrc

# Source bashrc to test the new PATH
source ~/.bashrc && echo $PATH

パス(少なくとも最初の部分)は次のようになります。

/usr/lib/ccache:/usr/local/cuda-5.5/bin/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

そしてg++/ gccが指すようになります:

which g++ gcc
/usr/lib/ccache/g++
/usr/lib/ccache/gcc

構成:

ファイルの数とキャッシュのサイズを制限しない場合:

ccache -F 0
ccache -M 0

キャッシュ統計を表示する:

ccache -s

キャッシュを空にして、統計をリセットします。

ccache -C -z

使用法:

あなたが呼び出すたびにgcc、またはg++ccacheと呼ばれます。私の間違いは、コンパイル済みのファイルを削除しなかったことです。すべてのCMake/ outputファイルを削除して、再度configure / compileしてください。

あなたccacheは空ではないはずです。ここでmake cleanand makeを試してみると、キャッシュのおかげですべてを再コンパイルするよりもはるかに高速であることがわかります。


この命令に従った後、いくつかの方法は、ccacheのキャッシュ打ち鳴らすと打ち鳴らす++ ...ない

4

あなた$PATHは正しく見えません。ccacheのディレクトリがあるはずです。ただ走れ:

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

...そして、g++コマンドを再試行します。このディレクトリには、を呼び出すプロキシコマンドがいっぱいですccache。これはほとんどのスクリプトで動作するはずです。


単にg++手動で呼び出している場合(上記のmakeを使用している場合とは異なります)、コマンドを追加するだけです。

ccache g++ ...

このディレクトリは存在しません: $ ls -1 /usr/lib/ccache/ avr-g++ avr-gcc avr-gcc-4.5.3 c++ c89-gcc c99-gcc cc g++ g++-4.6 gcc gcc-4.6 x86_64-linux-gnu-g++ x86_64-linux-gnu-g++-4.6 x86_64-linux-gnu-gcc x86_64-linux-gnu-gcc-4.6
ビクターLamoine

私はArchチュートリアルを読んでいました。すべてが/usr/lib/ccache/そのままの場合は、それを使用します。
オリ

export PATH="/usr/lib/ccache/:$PATH" ccacheバイナリが/usr/binおよびで動作しません/usr/bin/X11。成功せずにこれらの両方のパスを試してみました
ビクターラモイン

ただし、プロキシコマンド(上にリストしたとおり)はすべてです/usr/lib/ccache/。これらをパスに追加して、make呼び出し時g++などccに実際にccache-enabledバージョンを呼び出します。
オリ

リンクがccacheを指すようになったため(最初の投稿を編集しました)、キャッシュは常に空です。
ビクターラモイン

1

インストールについて:

Ubuntu 18.04(Bionic Beaver)では、出荷時のデフォルトではccおよびの呼び出しがキャッチされないことがわかりましたc++。そこにccacheを完全にインストールするには、次のものが必要です。

sudo apt install ccache
sudo /usr/sbin/update-ccache-symlinks
export PATH="/usr/lib/ccache/:$PATH"

そして、(更新シンボリックリンクによる)もへの呼び出しccc++捕まります!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.