Ці інструкції передбачають, що у вас є робочий крос-компілятор. Будь ласка, прочитайте, як створити ланцюжок інструментів 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вихідні навантаження клієнт корисної інформації.
Це довгий пост, тому будь-який відгук буде вдячний. Сподіваюся, я згадав усі кроки!