Quiero usar ccache para acelerar la compilación.
Encontré ¿Cómo habilito ccache? .
Esto es lo que he hecho hasta ahora:
$ 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
Agregué ccache
a la ruta agregándola a mi ~/.bashrc
archivo:
$ 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
Los enlaces simbólicos se ven bien:
$ 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*
El enlace se ve bien:
$ 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
Pero el caché está vacío:
$ 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
Donde me equivoco
Respuestas:
Instalación:
Su camino (al menos el principio) debería verse así:
Y
g++
/gcc
ahora debe apuntar a:Configuración:
Si no desea limitar la cantidad de archivos y el tamaño de la memoria caché:
Mostrar estadísticas de caché:
Vacíe el caché y restablezca las estadísticas:
Uso:
Cada vez que llamas
gcc
og++
;ccache
se llama. Mi error fue que no eliminé los archivos ya compilados. Simplemente elimine todos susCMake
archivos / output y configure / compile nuevamente.No
ccache
deberías estar vacío entonces. Ahora trata de unmake clean
emake
y verá que es mucho más rápido que volver a compilar todo gracias a la caché.fuente
Tu
$PATH
no parece correcto;ccache
El directorio debe estar allí. Solo corre:... e intente
g++
nuevamente sus comandos. Este directorio está lleno de comandos proxy que llamanccache
. Esto debería funcionar con la mayoría de los scripts.Si solo está llamando de forma
g++
manual (no como arriba donde está usando make), puede anteponer el comando:fuente
$ 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/
solo usar eso.export PATH="/usr/lib/ccache/:$PATH"
ccache binary está en/usr/bin
y/usr/bin/X11
. Intenté con estos dos caminos sin éxito/usr/lib/ccache/
. Se agrega de inmediato a su trayectoria de modo que cuandomake
las llamadasg++
occ
lo que sea, en realidad está llamando a laccache
versión habilitado.En cuanto a la instalación:
Descubrí que en Ubuntu 18.04 (Bionic Beaver) el valor predeterminado enviado no capta las invocaciones de
cc
yc++
. Para instalar completamente ccache allí, necesita:¡Y luego (debido a enlaces simbólicos actualizados) también llama
cc
yc++
queda atrapado!fuente