Kompiluję tutaj kilka programów i mam 4 rdzenie. Czy istnieje sposób, aby powiedzieć make
, cmake
czy gcc
kompilować za pomocą wszystkich rdzeni lub coś, które wpływają?
Jeśli pakiet go obsługuje, możesz użyć -j
flagi, aby zezwolić na uruchamianie równoległych zadań, np .:
make -j8
Więcej szczegółów na temat tej flagi można znaleźć w pytaniu Stackoverflow Dlaczego make -j działa lepiej, gdy przekazuje liczbę większą niż liczba dostępnych rdzeni? .
Jeśli masz wiele maszyn, wypróbuj distcc . Na zaangażowanych maszynach sudo apt-get install distcc
. Zakładając, że twoja maszyna kompilacji to 192.168.1.1:
na maszynach pomocniczych uruchom:
sudo distccd --log-file=/tmp/distccd.log --daemon -a 192.168.1.1
Na komputerze kompilacji, przed uruchomieniem configure
lub cmake
musisz określić hosty, których chcesz użyć w procesie kompilacji. Opcjonalnie określ liczbę równoczesnych zadań po ukośniku (domyślnie 4):
export DISTCC_HOSTS='localhost/4 192.168.1.2/8 192.168.1.3/8'
Niech kompilator użyje distcc:
export PATH="/usr/lib/distcc:$PATH"
Teraz configure
lub cmake
aplikacja i buduj z:
make -j$(distcc -j)
Pamiętaj, że jeśli wpiszesz /usr/lib/distcc
dwukrotnie ŚCIEŻKĘ, zawiedzie. Pamiętaj, aby ustawić /usr/lib/distcc
tylko raz w swoim PATH
.
Aby uzyskać więcej informacji, zobacz strony podręcznika dla distcc (1) i distccd (1) .
distccd --user nobody
. W przeciwnym razie będzie działać pod użytkownikiem, który go wykonał.