Rispondo qui un po' a tutti, per quello che ne sapevo io i flag
-O2 o -O3 servono per ottimizzare le performance del software
prodotto, non per velocizzare l'operazione di compilazione o
linking. Se si attivano quelle ottimizzazioni è giusto aspettarsi
tempi di compilazione maggiori.
Al volo da una googolata è spiegato più in dettaglio qui sotto:
https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Optimize-Options.html
------
Without any optimization option, the compiler's goal is to *reduce the*
*cost of compilation* and to make debugging produce the expected results.
[...]
Turning on optimization flags makes the compiler attempt to improve the
performance and/or code size *at the expense of compilation time* and
possibly the ability to debug the program
------
Per quel che riguarda distcc, servono più macchine su cui distribuire
il carico di lavoro, non è il mio caso, mi sembra più indicato per chi
debba distribuire i binari di un parco software da installare ad esempio
su un sistema ufficiale "vanilla", che gli altri utenti possano avere:
esempio se io dovessi gestire un repository di software non ufficiale,
extra preparato per essere installato e funzionare sulla versione
stabile di Debian, o quel che è.
In quel caso avendo esempio 10 macchine su cui ho altrettante
installazioni "full" del software ufficiale Debian, posso farle lavorare
insieme e sarò sicuro che la compilazione e soprattutto il linking verrà
fatto "contro" librerie ufficiali che anche gli utenti finali avranno
sui loro sistemi se hanno un'installazione vanilla.
Se i sistemi messi in network che lavorano via distcc contengono
librerie diverse, non saprei cosa salterebbe fuori. I binari finari
girerebbero forse, ma forse no perché magari si aspettano di trovare
una certa libreria che invece non c'è.
Va be' non era questo lo spirito della mia domanda comunque, distcc
non è ciò che fa al caso mio, a meno di non costruire enne macchine
per lo scopo.
C'era anche un'altro progetto che memorizzava pezzi delle compilazioni
e li richiamava in caso di compilazioni successive, ccache:
https://ccache.dev
Però non l'ho mai provato.
Non so se funzionerebbe per effettuare compilazione di software
necessaria in caso di upgrade vari. Del tipo, aggiorno una libreria
e devo compilare i software che dipendono da quella libreria in modo
che si colleghino ad essa.
Tornando all'hardware...
Quindi principalmente volendo migliorare la situazione tempi di
compilazione, principalmente si deve avere una CPU più prestante
accompagnata da Ram in abbondanza che più ne abbiamo e meglio è
come da sempre, il tutto condito con SSD che ormai per ospitare
il sistema operativo è in ogni caso un must.
Faccio una domanda sul processore allora:
meglio puntare sulla frequenza o sul numero di core per lo scopo in
oggetto?