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