Я складаю тут деякі програми і в мене є 4 ядра. Чи є спосіб сказати make
, cmake
чи gcc
скомпілювати з використанням всіх ядер або що - то , які впливають?
Я складаю тут деякі програми і в мене є 4 ядра. Чи є спосіб сказати make
, cmake
чи gcc
скомпілювати з використанням всіх ядер або що - то , які впливають?
Відповіді:
Якщо пакет підтримує його, ви можете використовувати -j
прапор, щоб дозволити виконання паралельних завдань, наприклад:
make -j8
Більш детальну інформацію про цей прапор можна знайти у питанні Stackoverflow. Чому make -j працює краще, коли він передається числом, більшим за кількість наявних ядер? .
Якщо у вас є кілька машин, дайте distcc ходити. На задіяних машинах sudo apt-get install distcc
. Якщо припустити, що ваша машина побудови 192.168.1.1:
на допоміжних машинах запустіть:
sudo distccd --log-file=/tmp/distccd.log --daemon -a 192.168.1.1
На машині збирання перед запуском configure
або cmake
потрібно вказати хости, які ви хочете використовувати для процесу збирання. За бажанням вкажіть кількість одночасних завдань після косої риски (за замовчуванням до 4):
export DISTCC_HOSTS='localhost/4 192.168.1.2/8 192.168.1.3/8'
Зробіть компілятор використовувати distcc:
export PATH="/usr/lib/distcc:$PATH"
Тепер configure
або cmake
додаток і створити за допомогою:
make -j$(distcc -j)
Зауважте, що якщо ви /usr/lib/distcc
двічі помістили свій PATH, він вийде з ладу. Не забудьте встановити /usr/lib/distcc
лише один раз у своєму PATH
.
Детальніше дивіться на сторінках керівництва для distcc (1) та distccd (1) .
distccd --user nobody
. В іншому випадку він працює під користувачем, який його виконав.