Kompiluję tutaj kilka programów i mam 4 rdzenie. Czy istnieje sposób, aby powiedzieć make, cmakeczy gcckompilować za pomocą wszystkich rdzeni lub coś, które wpływają?
Kompiluję tutaj kilka programów i mam 4 rdzenie. Czy istnieje sposób, aby powiedzieć make, cmakeczy gcckompilować za pomocą wszystkich rdzeni lub coś, które wpływają?
Odpowiedzi:
Jeśli pakiet go obsługuje, możesz użyć -jflagi, 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 configurelub cmakemusisz 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 configurelub cmakeaplikacja i buduj z:
make -j$(distcc -j)
Pamiętaj, że jeśli wpiszesz /usr/lib/distccdwukrotnie ŚCIEŻKĘ, zawiedzie. Pamiętaj, aby ustawić /usr/lib/distcctylko 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ł.