Sto compilando alcuni programmi qui e ho 4 core. C'è un modo per dirlo make, cmakeo gccper compilare usando tutti i core o qualcosa che influenzi?
Sto compilando alcuni programmi qui e ho 4 core. C'è un modo per dirlo make, cmakeo gccper compilare usando tutti i core o qualcosa che influenzi?
Risposte:
Se un pacchetto lo supporta, è possibile utilizzare il -jflag per consentire l'esecuzione di lavori paralleli, ad esempio:
make -j8
Maggiori dettagli su questo flag sono disponibili nella domanda StackOverflow Perché -j funziona meglio quando viene passato un numero maggiore del numero di core disponibili? .
Se disponi di più macchine, prova con distcc . Sulle macchine coinvolte, sudo apt-get install distcc. Supponendo che la tua macchina di compilazione sia 192.168.1.1:
sulle macchine helper, esegui:
sudo distccd --log-file=/tmp/distccd.log --daemon -a 192.168.1.1
Sulla macchina di compilazione, prima di eseguire configureo cmakeè necessario specificare gli host che si desidera utilizzare per il processo di compilazione. Facoltativamente, specificare il numero di lavori simultanei dopo una barra (l'impostazione predefinita è 4):
export DISTCC_HOSTS='localhost/4 192.168.1.2/8 192.168.1.3/8'
Fai in modo che il compilatore usi distcc:
export PATH="/usr/lib/distcc:$PATH"
Ora configureo cmakel'applicazione e compilare con:
make -j$(distcc -j)
Nota che se hai inserito /usr/lib/distccdue volte il tuo PERCORSO, fallirà. Assicurati di impostare /usr/lib/distccsolo una volta nel tuo PATH.
Per maggiori dettagli, consultare le pagine di manuale di distcc (1) e distccd (1) .
distccd --user nobody. Altrimenti, verrà eseguito sotto l'utente che lo ha eseguito.