LINUX « E-Pillole
Velocizzare la ricompilazione con ccache
Per diversi motivi, ci si ritrova spesso a dover ripulire e ricompilare più volte gli stessi sorgenti. Operazione alquanto noiosa, che diventa decisamente frustrante nel caso in cui si abbia a che fare con un sorgente complesso e di dimensioni considerevoli.
Niente paura, per chi ancora non lo sapesse, la soluzione si chiama ccache e consente di alleviare le nostre sofferenze velocizzando non di poco la ricompilazione.
Il funzionamento e la logica che sta dietro a ccache, sono riassunti nel nome stesso del programma, ccache > compiler cache, derivato direttamente dal suo antenato compilercache.
Sintetizzando al massimo, si tratta quindi di una cache per il nostro compilatore tuttofare di fiducia GCC, e non fa altro che memorizzare l'output della compilazione rendendolo disponibile per ogni successiva ricompilazione, e garantendo inevitabilmente tempi di ricompilazione minori e meno strazianti, nonchè un miglioramento tangibile della produttività della nostra macchina.
Il sorgente di ccache è ovviamente disponibile in download e per quanto riguarda Debian e Ubuntu, essendo presente nelle repository main di ogni release, è comodamente installabile via apt digitando:
sudo apt-get install ccache
Come sempre bisogna fare quando si installa una nuova applicazione, consultiamo l'help e le man pages per ottenere tutte le informazioni che ci occorrono:
ccache --help
man ccache
e siccome non potremo più farne a meno, esportiamo direttamente in ~/.bashrc o chi per esso la variabile d'ambiente PATH per ccache, di modo che il PATH venga impostato automaticamente ad ogni login nella shell:
export PATH=/usr/lib/ccache:$PATH
Operazioni preliminari completate, è ora giunto il momento di fare qualche semplice esempio per tradurre in soldoni i vantaggi che si ricavano dall'utilizzo di ccache.
Direi che possiamo partire compilando proprio il "microscopico" sorgente di ccache (V. 2.4):
time make ................ ................ ................ real 0m2.656s user 0m2.152s sys 0m0.248s
Ripuliamo i sorgenti:
make clean
e ricompiliamo di nuovo:
time make ................ ................ ................ real 0m0.784s user 0m0.424s sys 0m0.124s
Ottimo no? :)
Per chi non fosse ancora del tutto convinto, facciamo un'altro esempio compilando e ricompilando un sorgente un pochino più corposo, Pidgin (V. 2.1.0):
time make ................. ................. ................. real 6m36.797s user 4m38.296s sys 1m20.773s
Ripuliamo i sorgenti:
make clean
e ricompiliamo di nuovo:
time make ................. ................. ................. real 3m9.701s user 1m34.638s sys 1m8.608s
Credo possa bastare...vero? ;)
Diamo una sbirciatina alle statistiche:
ccache -s
cache directory /home/fede/.ccache cache hit 399 cache miss 493 called for link 106 compile failed 4 preprocessor error 4 not a C/C++ file 2 autoconf compile/link 70 unsupported compiler option 1 no input file 18 files in cache 986 cache size 17.0 Mbytes max cache size 976.6 Mbytes
e "rendiamo grazie" a ccache!! ASSOLUTAMENTE INDISPENSABILE
ho seguito la tua guida, ma non ho capito come si fa ad utilizzare ccache...
spero in un tuo aiuto.
grazie.
cosa non ti è chiaro??
forse l'export del PATH??
in pratica, per utilizzare ccache bisogna esportare il PATH ogni volta che apri il terminal...
per evitare di doverlo fare ogni volta è sufficiente inserire la riga:
export PATH=/usr/lib/ccache:$PATH
nel file nascosto .bashrc che si trova nella tua home...
fai così:
gedit ~/.bashrc
e in fondo al file inserisci:
export PATH=/usr/lib/ccache:$PATH
Salva, chiudi il file e riavvia il terminal...
In questo modo ccache è abilitato automaticamente e non dovrai più fare nulla...
Spero di essere stato un pochino più chiaro :)
ciaociao
grazie per il chiarimento!
comunque sei sempre molto chiaro e preciso.
ciao e grazie.
grazie a te ;)
good!! tutto OK :)
ciaociao
- Applications Software (2)
- Debian (1)
- Devel (1)
- Distribuzioni Varie (2)
- Easy Tricks (5)
- Gnome Desktop (2)
- Guide Debian (8)
- Guide Debian Ubuntu (12)
- Guide Ubuntu (9)
- Linux Printer Drivers (1)
- Man Pages Linux (2)
- My Feeds (3)
- Off Topic (2)
- Ping at Home (1)
- Problem Solving (4)
- Server Side (2)
- Tricks Debian Ubuntu (5)
- Ubuntu (8)
- Upgrades (5)
- NFS - Condivisione file Debian Ubuntu
- Ubuntu Case Studies: storie di successo in azienda e nelle scuole
- La tentazione del lato oscuro (Google AdSense) [Ping@Home]
- Linux Man Pages On-Line
- Gestione Moduli e Virtual Hosts di Apache2 su Debian e Ubuntu
- Visualizzare struttura ad albero di una directory
- Cron + Rhythmbox + Scriptino = Sveglia
- Soluzione piccolo problema con mp32ogg
- Velocizzare la ricompilazione con ccache
- Trasformare Gedit in un editor avanzato
- People DebianClan e TuxFeed: pinguini italiani alla riscossa
- Abilitare supporto AGP driver NVIDIA
- Finalmente rilasciata la GPLv3
- Compiz Fusion + Debian Sid
- Estensione NoScript per Firefox
- Compiz Fusion + Ubuntu Feisty
- Disabilitare o modificare splash screen Gnome
- Personalizzare gnome con GNOME Color Chooser
- VOGLIO usare Ubuntu
- Cronologia comandi bash
- febbraio 2008 (1)
- gennaio 2008 (2)
- dicembre 2007 (1)
- novembre 2007 (2)
- ottobre 2007 (1)
- agosto 2007 (3)
- luglio 2007 (2)
- giugno 2007 (20)
- maggio 2007 (13)
- aprile 2007 (10)
- marzo 2007 (20)










