Як встановити distcc?


10

Я прочитав Як створити інструментальну ланцюжок GCC 4.7 для перехресного складання? і успішно побудували просту програму тестування, яка працює на моєму RPi.

Для цього мені довелося запустити arm-unknown-linux-gnueabi-gcc hello.c -o helloна своєму робочому столі x86 і scpвиконуваному файлі до моєї RPi. Це повільно і неприємно. Я б швидше контролював компіляцію з моєї RPi.

Я читав про те distcc, що можна використовувати для розподілу компіляції з однієї машини на іншу.

Як це встановити? У мене на робочих столах SD встановлені обоє настільних ПК Debian / Ubuntu та Arch Linux, а також обох ОС.


Я чекав, що хтось, хто не я, опублікував це питання. Я дуже не хотів цього робити. Хороша робота.
Відхилення

export DISTCC_VERBOSE=1Дякую за це! Це те, що я шукаю, щоб налагодити свій distcc toolchain

Відповіді:


12

Ці інструкції передбачають, що у вас є робочий крос-компілятор. Будь ласка, прочитайте, як створити ланцюжок інструментів GCC 4.7 для перехресного складання? якщо ви цього не зробили. Також корисно makeвстановити на майстер.

Установка

По-перше, ми повинні встановити distcc. Ми будемо використовувати попередньо вбудовані пакети, що постачаються системами управління пакетами операційних систем, але ви можете вільно встановити з джерела, якщо хочете!

Debian

sudo apt-get install distcc

Арк

sudo pacman -S distcc

Конфігурація

Раб - Debian / Ubuntu

TODO: Це те ж саме для Arch? Якщо ні, то як налаштувати Arch?

Нам потрібно відрегулювати налаштування в /etc/default/distcc. У своєму улюбленому редакторі відкрийте його як корінь; Я побіг sudo vim /etc/default/distcc.

Вам потрібно змінити STARTDISTCC, ALLOWEDNETSі LISTENER. Якщо припустити, що ваш господар і підлеглий знаходяться в одній підмережі, і ця підмережа є 192.168.0.0/24, їх слід встановити

STARTDISTCC="true"
ALLOWEDNETS="192.168.0.0/24"
LISTENER="0.0.0.0"

Крім того, слід додати шлях до вашого компілятора. Я зробив це, додавши наступний рядок

PATH=$PATH:/home/alex/x-tools/arm-unknown-linux-gnueabi/bin

Примітка . Демон на підлеглому працює як distccdкористувач, тому переконайтеся, що на ваших виконуваних файлах налаштовано відповідні дозволи; Я дав усім дозвіл на страту.

Запустіть демон - зазвичай це буде запущено під час завантаження - бігом

sudo service distcc start

Майстер - арк

TODO: Це те саме для Debian? Якщо ні, то як налаштувати Debian?

Відкрийте ~/.distcc/hostsулюблений текстовий редактор і додайте IP-адресу Невільників. Мій hostsфайл складався з одного рядка, який читався 192.168.0.22.

Примітка Може бути хорошою ідеєю призначити статичну IP-адресу своєму підлеглому, інакше вам доведеться змінювати цей файл, коли IP-адреса змінюється.

Використовуйте

Все добре, ви повинні мати можливість використовувати distcc досить просто. Наприклад, щоб зібрати hello.cна hello.o, бігти

distcc arm-unknown-linux-gnueabi-gcc    -c -o hello.o hello.c

Приклад: Hello World!

Я створив простий приклад у своєму домашньому каталозі, який складався з 2-х файлів.

# file: Makefile
hello.o: hello.c
hello: hello.o

# file: hello.c
#include <stdio.h>

int main() {
  printf("Hello World!\n");
  return 0;
}

Біг make helloбуде складено локально; ви повинні зробити це як швидкий тест спочатку. Іди, я зачекаю.

Запуск make hello CC="distcc arm-unknown-linux-gnueabi-gcc"буде виконувати розподілену компіляцію.

Примітка Попередня обробка та зв'язування все ще відбувається на RPi.

Налагодження

Мені знадобилося певний час, щоб правильно працювати, і найкращим інструментом налагодження, який я знайшов, була проста змінна середовище. Якщо ви

export DISTCC_VERBOSE=1

в distccвихідні навантаження клієнт корисної інформації.

Це довгий пост, тому будь-який відгук буде вдячний. Сподіваюся, я згадав усі кроки!


Відмінна відповідь. Я збираюся зробити закладку для моєї розробки RPi.
Стрибки

@AlexChamberlain Distcc тепер підтримує "режим насоса", що дозволяє йому також розподіляти попередню обробку.
teraquendya

@teraquendya Дійсно, я ще не збирався розміщувати деталі про це. Я хочу переконатися, що я все в порядку вийшов без режиму насоса.
Алекс Чемберлен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.