Ich kompiliere hier einige Programme und habe 4 Kerne. Gibt es eine Möglichkeit zu sagen make
, cmake
oder gcc
zu verwenden alle Kerne oder etwas zu kompilieren , die beeinflussen?
Ich kompiliere hier einige Programme und habe 4 Kerne. Gibt es eine Möglichkeit zu sagen make
, cmake
oder gcc
zu verwenden alle Kerne oder etwas zu kompilieren , die beeinflussen?
Antworten:
Wenn ein Paket dies unterstützt, können Sie das -j
Flag verwenden, um die Ausführung paralleler Jobs zuzulassen, z.
make -j8
Weitere Details zu diesem Flag finden Sie in der Stackoverflow-Frage. Warum ist die Leistung von -j besser, wenn eine Nummer übergeben wird, die größer ist als die Anzahl der verfügbaren Kerne? .
Wenn Sie mehrere Maschinen haben, probieren Sie distcc aus . Auf den beteiligten Maschinen , sudo apt-get install distcc
. Angenommen, Ihre Build-Maschine ist 192.168.1.1:
Führen Sie auf den Hilfsmaschinen Folgendes aus:
sudo distccd --log-file=/tmp/distccd.log --daemon -a 192.168.1.1
Auf dem Build-Computer müssen Sie vor dem Ausführen configure
oder cmake
Hosts angeben, die Sie für den Build-Prozess verwenden möchten. Geben Sie optional die Anzahl der gleichzeitigen Jobs nach einem Schrägstrich an (standardmäßig 4):
export DISTCC_HOSTS='localhost/4 192.168.1.2/8 192.168.1.3/8'
Lassen Sie den Compiler distcc verwenden:
export PATH="/usr/lib/distcc:$PATH"
Jetzt configure
oder cmake
die Anwendung und bauen mit:
make -j$(distcc -j)
Beachten Sie /usr/lib/distcc
, dass ein fehlgeschlagener PATH fehlschlägt. Stellen Sie sicher, dass Sie /usr/lib/distcc
nur einmal in Ihrem einstellen PATH
.
Weitere Einzelheiten finden Sie auf den Handbuchseiten für distcc (1) und distccd (1) .
distccd --user nobody
. Andernfalls wird es unter dem Benutzer ausgeführt, der es ausgeführt hat.