Raspberry Pi — различия между версиями
Avp (обсуждение | вклад) (→Сервер: Дополнил раздел) |
Avp (обсуждение | вклад) (→distcc: Дополнил раздел) |
||
Строка 49: | Строка 49: | ||
$ apt-get install distcc | $ apt-get install distcc | ||
+ | Добавляем хосты-помощники (на которых запущен <code>distccd</code>) в файл <code>/etc/distcc/hosts</code>, убираем (комментируем) <code>+zeroconf</code>: | ||
+ | |||
+ | #+zeroconf | ||
+ | localhost,lzo,cpp penguin,lzo,cpp pelican,lzo,cpp | ||
+ | |||
+ | === Тестирование === | ||
Тестирование распределённой сборки будем делать на утилите [http://hisham.hm/htop/index.php?page=main htop]: | Тестирование распределённой сборки будем делать на утилите [http://hisham.hm/htop/index.php?page=main htop]: | ||
$ wget http://hisham.hm/htop/releases/1.0.3/htop-1.0.3.tar.gz | $ wget http://hisham.hm/htop/releases/1.0.3/htop-1.0.3.tar.gz | ||
$ tar -zxf htop-1.0.3.tar.gz | $ tar -zxf htop-1.0.3.tar.gz | ||
$ cd htop-1.0.3 | $ cd htop-1.0.3 | ||
+ | |||
+ | Ставим необходимые библиотеки для сборки: | ||
+ | |||
+ | $ sudo apt-get install libncurses5-dev | ||
Указываем путь к компиляторам: | Указываем путь к компиляторам: | ||
$ export CXX=/usr/lib/distcc/arm-linux-gnueabihf-g++ CC=/usr/lib/distcc/arm-linux-gnueabihf-gcc | $ export CXX=/usr/lib/distcc/arm-linux-gnueabihf-g++ CC=/usr/lib/distcc/arm-linux-gnueabihf-gcc | ||
+ | |||
+ | Запускаем компиляцию: | ||
+ | |||
+ | $ ./configure --disable-unicode | ||
+ | $ make -j4 | ||
+ | |||
+ | === distccmon === | ||
+ | distccmon позволяет отслеживать статус компиляции -- при запуске на машине, которая компилирует что-либо через <code>distcc</code>, она показывает, какие файлы в данный момент обрабатываются и на каком хосте. Утилита идёт в двух ипостасях -- консольная <code>distccmon-text</code> и графическая <code>distccmon-text</code> (которая ставится отдельно.) | ||
+ | |||
+ | Пример запуска <code>distccmon-text</code>: | ||
+ | |||
+ | $ watch -n1 distccmon-text | ||
=== Изменение уровня логирования === | === Изменение уровня логирования === |
Версия 13:45, 5 сентября 2015
Содержание
Raspberry Pi
Информация о нашем экземпляре Raspberry Pi:
$ uname -a Linux puffin 3.2.0-4-rpi #1 Debian 3.2.51-1+rpi1 armv6l GNU/Linux $ cat /etc/debian_version 7.8
distcc
Компиляция на Raspberry Pi чего-либо сложнее "Hello World!" может занимать приличное количество времени, и естественным желанием является ускорение этого процесса. Решением данной проблемы может служить распределённая (кросс)-компиляция для Raspberry Pi, что и будет рассмотрено далее.
Сервер
Здесь мы рассмотрим настройку distccd
на машинах, которые будут помогать нашему Raspberry Pi в нелёгкой задаче компиляции.
Во-первых, ставим distccd
:
$ apt-get install distcc
Клонируем набор утилит (англ. toolchain)[1]:
$ git clone --depth=1 https://github.com/raspberrypi/tools.git rpi-tools $ sudo mv rpi-tools /opt/
Тогда путь к toolchain'у будет следующий:
/opt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
Теперь указываем distccd
путь к утилитам. Меняем /etc/init.d/distcc
:
RPI_BIN_PATH=/opt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$RPI_BIN_PATH
Правим настройки distccd
в файле /etc/default/distcc
:
STARTDISTCC="true" ALLOWEDNETS="172.16.1.0/16" LISTENER="0.0.0.0" JOBS="2"
Перезапускаем сервис:
$ sudo service distcc restart
Клиент (Raspberry Pi)
Клиентом выступает наш Raspberry Pi.
Ставим distcc
:
$ apt-get install distcc
Добавляем хосты-помощники (на которых запущен distccd
) в файл /etc/distcc/hosts
, убираем (комментируем) +zeroconf
:
#+zeroconf localhost,lzo,cpp penguin,lzo,cpp pelican,lzo,cpp
Тестирование
Тестирование распределённой сборки будем делать на утилите htop:
$ wget http://hisham.hm/htop/releases/1.0.3/htop-1.0.3.tar.gz $ tar -zxf htop-1.0.3.tar.gz $ cd htop-1.0.3
Ставим необходимые библиотеки для сборки:
$ sudo apt-get install libncurses5-dev
Указываем путь к компиляторам:
$ export CXX=/usr/lib/distcc/arm-linux-gnueabihf-g++ CC=/usr/lib/distcc/arm-linux-gnueabihf-gcc
Запускаем компиляцию:
$ ./configure --disable-unicode $ make -j4
distccmon
distccmon позволяет отслеживать статус компиляции -- при запуске на машине, которая компилирует что-либо через distcc
, она показывает, какие файлы в данный момент обрабатываются и на каком хосте. Утилита идёт в двух ипостасях -- консольная distccmon-text
и графическая distccmon-text
(которая ставится отдельно.)
Пример запуска distccmon-text
:
$ watch -n1 distccmon-text
Изменение уровня логирования
Для изменения уровня логирования distccd
необходимо поменять значение опции --log-level
. Это можно сделать в /etc/init.d/distcc
:
DAEMON_ARGS="--pid-file=/var/run/$NAME.pid --log-level debug --log-file=/var/log/$NAME.log --daemon"
Сноски
- ↑ Опция
--depth=1
предписывает клонировать только последний коммит с брэнча, без клонирования всей истории.