Raspberry Pi

Версия от 13:10, 5 сентября 2015; Avp (обсуждение | вклад) (Создал страницу)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

Содержание

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

Клиент (Raspberry Pi)

Клиентом выступает наш Raspberry Pi.

Ставим distcc:

$ apt-get install distcc

Тестирование распределённой сборки будем делать на утилите 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

Указываем путь к компиляторам:

$ export CXX=/usr/lib/distcc/arm-linux-gnueabihf-g++ CC=/usr/lib/distcc/arm-linux-gnueabihf-gcc

Изменение уровня логирования

Для изменения уровня логирования 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"

Сноски

  1. Опция --depth=1 предписывает клонировать только последний коммит с брэнча, без клонирования всей истории.