Come faccio a configurare ccache?

29

Desidero utilizzare ccache per accelerare la compilazione. Mi sono imbattuto in come posso abilitare ccache

Questo è quello che ho fatto finora:

$ 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

Ho aggiunto ccache al percorso aggiungendo al mio ~/.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

I link simbolici sono perfetti:

$ 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*

Il link sembra buono:

$ 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

Ma la cache è vuota:

$ 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

Dove mi sbaglio?

    
posta Victor Lamoine 22.05.2014 - 11:58

3 risposte

33

Installazione:

# 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

Il tuo percorso (almeno all'inizio) dovrebbe essere simile a:

/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

E g++ / gcc ora dovrebbe puntare a:

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

Configurazione:

Se non vuoi limitare il numero di file e le dimensioni della cache:

ccache -F 0
ccache -M 0

Mostra statistiche cache:

ccache -s

Svuota la cache e ripristina le statistiche:

ccache -C -z

Utilizzo:

Ogni volta che chiami gcc o g++ ; ccache è chiamato. Il mio errore è stato che non ho cancellato i file già compilati. Basta eliminare tutti i tuoi file CMake / output e configurare / compilare di nuovo.

Il tuo ccache non dovrebbe essere vuoto allora. Ora prova un make clean e make e vedrai che è molto più veloce della ricompilazione di tutto grazie alla cache.

    
risposta data Victor Lamoine 22.05.2014 - 16:31
3

La tua $PATH non sembra corretta; La directory di ccache dovrebbe essere lì. Esegui:

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

... e riprova ancora i tuoi comandi g++ . Questa directory è piena di comandi proxy che chiamano ccache . Questo dovrebbe funzionare con la maggior parte degli script.

Se stai chiamando g++ manualmente (non come sopra dove stai usando make), puoi semplicemente anteporre il comando:

ccache g++ ...
    
risposta data Oli 22.05.2014 - 13:32
0

Per quanto riguarda l'installazione: Ho trovato che su Ubuntu 18.04 il default spedito non cattura le invocazioni di cc e c++ . Per installare completamente ccache, è necessario

sudo apt-get install ccache sudo /usr/sbin/update-ccache-symlinks export PATH="/usr/lib/ccache/:$PATH" e poi (a causa di collegamenti simbolici aggiornati) anche le chiamate a cc e c ++ vengono catturate!

    
risposta data Jürgen Weigert 13.04.2018 - 14:49

Leggi altre domande sui tag