Итак что мы имеем:
1. Desktop :
- AMD Athlon (tm) 64 3000+, 2 гб. оперативной памяти.
- Gentoo Linux x86_64, 2.6.33 - linux kernel, gcc version 4.4.3
- Intel(r) Core(tm) i3 CPU M 330, 2.13GHz, 3 гб. оперативной памяти.
- Ubuntu Linux x86_64, 2.6.33 - linux kernel, gcc version 4.4.3
первые две цифры в версии компилятора были одинаковыми.
Настройка Ubuntu.
Устанавливаем компиляторы и distcc:
sudo apt-get install gcc g++ distcc
Затем добавляем в файл /etc/distcc/hosts адрес хоста, на котором можно запускать кrомпиляцию и через "/" максимальное количество потоков, которое способен принять для компиляции компьютер:
echo "192.168.2.1/2" > /etc/distcc/hosts
Далее нужно настроить демон distcc который будет принимать файлы для компиляции от Desktop компьютера. Для этого редактируем файл /etc/default/distcc где устанавливаем какой интерфейс слушать, сколько работ может принимать хост для компляции и т.д. Вот пример моего файла конфигурации:
STARTDISTCC="true"
ALLOWEDNETS="127.0.0.1 192.168.2.1"
LISTENER="192.168.2.2"
NICE="10"
JOBS="4"
После этого запускаем демон distcc:
/etc/init.d/distcc start
Настройка Gentoo.
Устанавливаем distcc :
emerge -v distcc
Указываем список хостов, на которые передавать данные для компиляции и количество потоков:
/usr/bin/distcc-config --set-hosts "192.168.2.1/2 192.168.2.2/4"
настраиваем демон distcc, добавляя в файл /etc/conf.d/distccd следующие строки:
DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.2.2"
DISTCCD_OPTS="${DISTCCD_OPTS} --listen 192.168.2.1"
DISTCCD_OPTS="${DISTCCD_OPTS} --jobs 2"
запускаем distcc:
/etc/init.d/distccd start
Для того, чтобы проверить, что все настроено правильно добавляем в Gentoo в файл /etc/make.conf строчку:
FEATURES="distcc"
и пробуем собрать какой нибудь пакет:
emerge dev-libs/glib
И в то же самое время, смотрим на Ubuntu файл логов distcc. Если все работает нормально, то сообщения должны быть примерно такими:
distccd[5791] (dcc_job_summary) client: 192.168.2.1:55352 COMPILE_OK exit:0 sig:0 core:0 ret:0 time:67ms x86_64-pc-linux-gnu-gcc /var/tmp/ccache/api.tmp.ZION.23853.i
Возможные проблемы.
Я столкнулся со следующей проблемой. В логах на машине с Ubuntu у меня появлялась строчка:
distccd[4506] (dcc_execvp) ERROR: failed to exec x86_64-pc-linux-gnu-g++: No such file or directory.
Это сообщение появлялось из за того, что в Gentoo компилятор называется x86_64-pc-linux-gnu-g++ а в Ubuntu x86_64-linux-gnu-g++.
Чтобы это вылечить, нужно создать в каталоге /usr/bin/ символическую ссылку:
ln -s g++ x86_64-pc-linux-gnu-g++