Comment accélérer la compilation d’applications Ubuntu (make, cmake, gcc)

Je comstack quelques programmes ici et j’ai 4 cœurs. Existe-t-il un moyen de dire à make , cmake ou gcc de comstackr en utilisant tous les cœurs ou quelque chose de ce genre?

Si un package le prend en charge, vous pouvez utiliser l’indicateur -j pour autoriser l’exécution de tâches parallèles, par exemple:

 make -j8 

Vous trouverez plus de détails sur ce drapeau dans la question Stackoverflow Pourquoi make -j fonctionne-t-il mieux quand un nombre supérieur au nombre de cœurs disponibles est transmis? .

Compilation dissortingbuée

Si vous avez plusieurs machines, essayez distcc . Sur les machines impliquées, sudo apt-get install distcc . En supposant que votre machine de compilation soit 192.168.1.1:

  • sur les machines auxiliaires, exécutez:

     sudo distccd --log-file=/tmp/distccd.log --daemon -a 192.168.1.1 
  • Sur la machine de construction, avant d’exécuter configure ou cmake vous devez spécifier les hôtes que vous souhaitez utiliser pour le processus de construction. Spécifiez éventuellement le nombre de travaux simultanés après une barre oblique (4 par défaut):

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

    Faites en sorte que le compilateur utilise distcc:

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

    Maintenant, configure ou cmake l’application et construisez-la avec:

     make -j$(distcc -j) 

    Notez que si vous avez mis /usr/lib/distcc deux fois dans votre PATH, cela échouera. Assurez-vous de ne définir qu’une seule fois /usr/lib/distcc dans votre PATH .

Pour plus de détails, voir les pages de manuel de distcc (1) et distccd (1) .