Estou compilando alguns programas aqui e tenho 4 núcleos. Existe uma maneira de dizer make
, cmake
ou gcc
compilar usando todos os núcleos ou algo para que afetam?
Estou compilando alguns programas aqui e tenho 4 núcleos. Existe uma maneira de dizer make
, cmake
ou gcc
compilar usando todos os núcleos ou algo para que afetam?
Respostas:
Se um pacote suportar, você pode usar o -j
sinalizador para permitir a execução de trabalhos paralelos, por exemplo:
make -j8
Mais detalhes sobre esse sinalizador podem ser encontrados na pergunta Stackoverflow Por que make -j tem um desempenho melhor quando é passado um número maior que o número de núcleos disponíveis? .
Se você tiver várias máquinas, experimente o distcc . Nas máquinas envolvidas sudo apt-get install distcc
. Supondo que sua máquina de compilação seja 192.168.1.1:
nas máquinas auxiliares, execute:
sudo distccd --log-file=/tmp/distccd.log --daemon -a 192.168.1.1
Na máquina de compilação, antes de executar configure
ou cmake
você deve especificar os hosts que deseja usar para o processo de compilação. Opcionalmente, especifique o número de trabalhos simultâneos após uma barra (o padrão é 4):
export DISTCC_HOSTS='localhost/4 192.168.1.2/8 192.168.1.3/8'
Faça o compilador usar distcc:
export PATH="/usr/lib/distcc:$PATH"
Agora configure
ou cmake
o aplicativo e construa com:
make -j$(distcc -j)
Observe que se você colocar /usr/lib/distcc
duas vezes no seu PATH, ele falhará. Certifique-se de definir /usr/lib/distcc
apenas uma vez no seu PATH
.
Para mais detalhes, consulte as páginas de manual do distcc (1) e distccd (1) .
distccd --user nobody
. Caso contrário, ele será executado sob o usuário que o executou.