Eu quero usar o ccache para acelerar a compilação.
Me deparei com Como ativar o ccache? .
Isto é o que eu fiz até agora:
$ 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
Anexei ccache
ao caminho adicionando-o ao meu ~/.bashrc
arquivo:
$ 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
Os links simbólicos parecem bons:
$ 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*
O link parece bom:
$ 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
Mas o cache está vazio:
$ 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
Onde eu estou errado?
Respostas:
Instalação:
Seu caminho (pelo menos o começo) deve se parecer com:
E
g++
/gcc
agora deve apontar para:Configuração:
Se você não deseja um limite para o número de arquivos e o tamanho do cache:
Mostrar estatísticas de cache:
Esvazie o cache e redefina as estatísticas:
Uso:
Toda vez que você liga
gcc
oug++
;ccache
é chamado. Meu erro foi não excluir os arquivos já compilados. Apenas apague todos os seusCMake
arquivos / output e configure / compile novamente.Você
ccache
não deveria estar vazio então. Agora tente ummake clean
emake
verá que é muito mais rápido do que recompilar tudo graças ao cache.fonte
O seu
$PATH
não parece correto;ccache
O diretório de deve estar lá. Apenas corra:... e tente seus
g++
comandos novamente. Este diretório está cheio de comandos proxy que chamamccache
. Isso deve funcionar com a maioria dos scripts.Se você está apenas chamando
g++
manualmente (não como acima, onde está usando o make), basta adicionar o comando:fonte
$ 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
/usr/lib/ccache/
apenas usando isso.export PATH="/usr/lib/ccache/:$PATH"
ccache, o binário está em/usr/bin
e/usr/bin/X11
. Eu tentei com ambos os caminhos sem sucesso/usr/lib/ccache/
. Você adicioná-los para o seu caminho de modo que quandomake
chamadasg++
oucc
ou qualquer outra coisa, é realmente chamar accache
versão habilitado.Em relação à instalação:
Eu descobri que no Ubuntu 18.04 (Bionic Beaver) o padrão enviado não captura invocações de
cc
ec++
. Para instalar o ccache completamente lá, você precisa:E então (devido aos links simbólicos atualizados) também chama
cc
ec++
é pego!fonte