Sto compilando alcuni programmi qui e ho 4 core. C'è un modo per dirlo make
, cmake
o gcc
per compilare usando tutti i core o qualcosa che influenzi?
Sto compilando alcuni programmi qui e ho 4 core. C'è un modo per dirlo make
, cmake
o gcc
per compilare usando tutti i core o qualcosa che influenzi?
Risposte:
Se un pacchetto lo supporta, è possibile utilizzare il -j
flag 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 configure
o 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 configure
o cmake
l'applicazione e compilare con:
make -j$(distcc -j)
Nota che se hai inserito /usr/lib/distcc
due volte il tuo PERCORSO, fallirà. Assicurati di impostare /usr/lib/distcc
solo 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.