Ccache

Un article de ALW - Another Linux Wiki.


[modifier] Introduction

ccache est un cache de compilation. Il utilise le flag -E de gcc et un hash pour détecter quand une compilation peut tirer partie du cache. On peut avoir une compilation de 5 à 10 fois plus rapide pour les compilations courantes.

Les zones de travail courantes pour ccache sont:

 /root/.ccache
 /var/tmp/ccache 

Les exemples ci dessous considèrent que le ccache travail dans /root/. Il suffira d'adapter aux besoins de chacun.

[modifier] Installation

Portage doir être d'une version supérieure à la 2.0.46-r11. emerge --version nous repondra sur ce point. Ensuite vient l'installation proprement dite.

 $ emerge dev-util/ccache

Ensuite il suffit d'ajouter "ccache" et "CCACHE_DIR" dans le make.conf.

File: /etc/make.conf

FEATURES="ccache" CCACHE_DIR="/root/.ccache" #Ce paramètre est ajouté par défaut par portage dans ses versions récentes

Si vous utilisez aussi Distcc, il faut s'assurer de mettre "ccache" avant "distcc" dans la liste des FEATURES du make.conf pour en tirer le meilleur avantage.

On régle la taille du cache également dans le make.conf:

File: /etc/make.conf

CCACHE_SIZE="2G"

La valeur par defaut est de 512Mo. On peut également régler cette valeur via la commande ccache:

 ccache -M 2G

Un réglage via ccache sans passer par la case make.conf ne conservera pas la valeur après un reboot.

Pour être sûr que ccache fonctionne, on va observer l'état du cache après avoir utilisé emerge. Si ccache est actif ça devrait ressembler à ca:

 $ ccache -s
 cache hit                            189
 cache miss                          1983
 called for link                      159
 multiple source files                  4
 compile failed                        52
 preprocessor error                     4
 bad compiler arguments                 3
 not a C/C++ file                     141
 autoconf compile/link                357
 unsupported compiler option           30
 no input file                        145
 files in cache                      3966
 cache size                          30.1 Mbytes
 max cache size                       2.0 Gbytes

Si le cache n'est pas utilisé c'est qu'il doit y avoir un soucis :o)

[modifier] Conclusion

ccache nous permet de tirer profit des nombreuses compilations qu'on peut faire sous gentoo. Ce n'est pas profitable à toutes les applis, mais pourquoi se priver :-)

Utiliser avec Distcc cela apporte un réel confort d'utilisation.

Rubriques