Como acelerar a compilação de aplicativos do Ubuntu (make, cmake, gcc)

11

Estou compilando alguns programas aqui e tenho 4 núcleos. Existe uma maneira de dizer make , cmake ou gcc para compilar usando todos os núcleos ou algo assim?

    
por Luis Alvarado 23.02.2012 / 17:53

1 resposta

13

Se um pacote for compatível, você poderá usar o sinal -j para permitir a execução de tarefas paralelas, por exemplo:

make -j8

Mais detalhes sobre esse sinalizador podem ser encontrados na pergunta sobre o Stackoverflow Por que o desempenho do -j é melhor quando é passado um número maior que o número de núcleos disponíveis? .

Compilação distribuída

Se você tiver várias máquinas, dê um distcc . Nas máquinas envolvidas, sudo apt-get install distcc . Supondo que sua máquina de compilação é 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 , é necessário especificar os hosts que você deseja usar para o processo de compilação. Opcionalmente, especifique o número de trabalhos simultâneos após uma barra (com o padrão de 4):

    export DISTCC_HOSTS='localhost/4 192.168.1.2/8 192.168.1.3/8'
    

    Faça o compilador usar o distcc:

    export PATH="/usr/lib/distcc:$PATH"
    

    Agora, configure ou cmake do aplicativo e compilação com:

    make -j$(distcc -j)
    

    Observe que, se você colocar /usr/lib/distcc duas vezes no seu PATH, ele falhará. Não se esqueça de definir /usr/lib/distcc apenas uma vez no seu PATH .

Para mais detalhes, veja as páginas de manual de distcc (1) e distccd(1) .

    
por Lekensteyn 23.02.2012 / 18:11