Je compile quelques programmes ici et j'ai 4 cœurs. Est - il possible de dire make, cmakeou gccde compiler en utilisant tous les noyaux ou quelque chose à qui touchent?
Je compile quelques programmes ici et j'ai 4 cœurs. Est - il possible de dire make, cmakeou gccde compiler en utilisant tous les noyaux ou quelque chose à qui touchent?
Réponses:
Si un package le prend en charge, vous pouvez utiliser l' -jindicateur pour autoriser l'exécution de travaux parallèles, par exemple:
make -j8
Plus de détails sur cet indicateur peuvent être trouvés dans la question Stackoverflow Pourquoi faire -j fonctionne mieux quand il est passé un nombre supérieur au nombre de cœurs disponibles? .
Si vous avez plusieurs machines, essayez distcc . Sur les machines concernées, sudo apt-get install distcc. En supposant que votre machine de génération est 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 génération, avant d'exécuter configureou cmakevous devez spécifier les hôtes que vous souhaitez utiliser pour le processus de génération. Facultativement, spécifiez le nombre de travaux simultanés après une barre oblique (par défaut à 4):
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 configureou cmakel'application et créez avec:
make -j$(distcc -j)
Notez que si vous avez mis /usr/lib/distccdeux fois dans votre PATH, cela échouera. Assurez-vous de /usr/lib/distccne définir qu'une seule fois dans votre PATH.
Pour plus de détails, consultez les pages de manuel de distcc (1) et distccd (1) .
distccd --user nobody. Sinon, il s'exécutera sous l'utilisateur qui l'a exécuté.