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 :
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 :
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
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