Je compile quelques programmes ici et j'ai 4 cœurs. Est - il possible de dire make
, cmake
ou gcc
de 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
, cmake
ou gcc
de compiler en utilisant tous les noyaux ou quelque chose à qui touchent?
Réponses:
Si un package le prend en charge, vous pouvez utiliser l' -j
indicateur 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 configure
ou cmake
vous 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 configure
ou cmake
l'application et créez avec:
make -j$(distcc -j)
Notez que si vous avez mis /usr/lib/distcc
deux fois dans votre PATH, cela échouera. Assurez-vous de /usr/lib/distcc
ne 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é.