ccache

Updated 2 Février 2020

Introduction

ccache est le cache compilateur С / С++ Il rend la recompilation plus rapide, en mettant en cache les résultats des compilations précédentes et en vérifiant quand la même compilation est réalisée à nouveau. Les langages acceptés sont C, C, Objective-C et Objective-C. Ccache a été conçu avec soin pour toujours générer exactement le même résultat que celui que vous obtiendriez sans la mise en cache. La seule chose qui permet de savoir que vous utilisez ccache est la vitesse de compilation.

Fonctionnalités

  • Enregistre les succès et les échecs
  • Ajustement automatique de la taille du cache
  • Possibilité de mettre en cache les compilations qui ont généré des avertissements.
  • Facile à installer
  • Faible charge
  • Peut compresser les fichiers mis en cache pour réduire l'espace disque utilisé.

Restrictions

  • Permet de mettre en cache la compilation d'un seul fichier. Pour la compilation de plusieurs fichiers, la mise en page reposera toujours sur un vrai compilateur.
  • Certains drapeaux de compilation ne sont pas pris en charge. Si c'est le cas,

Utiliser ccache sur Calculate Linux

  • Recompilation de paquets avec des drapeaux USE personnalisés
  • Recompilation de paquets, y compris avec des correctifs
  • Utiliser les paquets live (9999 au total)
  • Avec ccache, de gros paquets tels que Chromium, Libreoffice, Firefox peuvent être installés en toute sécurité à partir des sources, sans risque de perdre le résultat de plusieurs heures de compilation à cause d'une erreur.
  • Recompilation du noyau

Installation

Pour ccache :

emerge -a dev-util/ccache

Une fois installé, ccache sera optimisé pour fonctionner avec Portage et cl-kernel. Son répertoire de service est /var/calculate/ccache.

Configuration

La taille du cache par défaut est limitée à 5 Go~. Si nécessaire, définissez la taille maximale du cache pour Portage :

/etc/portage/make.conf/custom

# Max ccache size
CCACHE_SIZE=10G

Note

La taille du cache dans /var/calculate/ccache/ccache.conf sera mise à jour après chaque compilation de paquets.

Utilisation

Pour afficher les statistiques de la mémoire cache, exécutez la commande suivante :

ccache -s
cache directory                     /var/calculate/ccache
primary config                      /var/calculate/ccache/ccache.conf
secondary config      (readonly)    /etc/ccache.conf
stats updated                       Fri Jan 31 11:54:54 2020
stats zeroed                        Fri Jan 31 11:54:54 2020
cache hit (direct)                     0
cache hit (preprocessed)               0
cache miss                             0
cache hit rate                      0.00 %
cleanups performed                     0
files in cache                         0
cache size                           0.0 kB
max cache size                       5.0 GB

Par exemple, désactivez le dépôt de paquets binaires pour app-editors/vile si vous préférez le compiler à partir du code source :

FEATURES="-getbinpkg" emerge -a app-editors/vile

En parcourant les nouvelles statistiques, vous pouvez rencontrer des éléments ont été mis en cache au moment de la compilation, qui n'ont pas encore été réutilisés :

ccache -s
cache directory                     /var/calculate/ccache
primary config                      /var/calculate/ccache/ccache.conf
secondary config      (readonly)    /etc/ccache.conf
stats updated                       Fri Jan 31 11:57:52 2020
stats zeroed                        Fri Jan 31 11:54:54 2020
cache hit (direct)                     0
cache hit (preprocessed)               0
cache miss                           194
cache hit rate                      0.00 %
called for link                      174
called for preprocessing              44
compile failed                         6
preprocessor error                     1
bad compiler arguments                 2
autoconf compile/link                100
no input file                          3
cleanups performed                    10
files in cache                       342
cache size                           3.0 MB
max cache size                       5.0 GB

Relancez la compilation de vile et vérifiez le cache :

FEATURES="-getbinpkg" emerge -a app-editors/vile

ccache -s
cache directory                     /var/calculate/ccache
primary config                      /var/calculate/ccache/ccache.conf
secondary config      (readonly)    /etc/ccache.conf
stats updated                       Fri Jan 31 12:03:17 2020
stats zeroed                        Fri Jan 31 11:54:54 2020
cache hit (direct)                   146
cache hit (preprocessed)              47
cache miss                           195
cache hit rate                     49.74 %
called for link                      348
called for preprocessing              88
compile failed                        12
preprocessor error                     2
bad compiler arguments                 4
autoconf compile/link                200
no input file                          6
cleanups performed                    10
files in cache                       344
cache size                           3.0 MB
max cache size                       5.0 GB

Vous pouvez maintenant constater que la mémoire cache est pleinement utilisée. Lorsque la taille maximale du cache est atteinte, ccache supprime les données enregistrées les moins utilisées.

Pour réinitialiser les statistiques, exécutez :

ccache -z

Pour vider la mémoire cache, exécutez la commande suivante :

ccache -C

Ccache invoquera automatiquement le gestionnaire de paquets et cl-kernel. Si vous voulez utiliser ccache pour toute compilation GCC, penser à redéfinir la variable PATH :

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

Si vous souhaitez toujours utiliser ccache, ajoutez ceci à .bashrc :

echo 'export PATH="/usr/lib/ccache/bin:$PATH"' >> ~/.bashrc

Un utilisateur non autorisé peut être amené à indiquer son répertoire de cache. Sinon, la valeur retenue par défaut est celle de ~/.ccache.

echo 'export CCACHE_DIR="/var/calculate/userccache"' >> ~/.bashrc