Кросс-компиляция пакетов Linux

Я строю платформу для невизуального наблюдения (сонар), используя одноплатный компьютер (Pandaboard) под управлением Arch Linux. Проблема в том, что когда мне нужно добавить функцию в мою установку, make а также make install процессы на компьютере с низким энергопотреблением будут длиться вечно. Я хотел бы, чтобы кто-то с подобным опытом указал мне на решение для компиляции пакетов на другом Linux-боксе (также с Arch) и затем портирования их на SBC.

1 ответ

Вы читаете или имеете доступ к журналу Linux Format? В этом выпуске 166 есть статья на эту тему. Цель - Raspberry Pi, но процесс тот же.

По сути, вам нужно установить кросс-компилятор на вашем компьютере x86. Попробуй это:

yaourt -S arm-linux-gnueabi-gcc

прежде чем идти дальше, протестируйте этот набор инструментов с помощью простого hello,world что вы можете скомпилировать на x86, скопировать на устройство и выполнить.

/* hello.c */
#include <stdio.h>
int main ()
{
   printf("Hello, World!\n");
   return 0;
}

Команда компиляции будет что-то вроде

arm-linux-gnueabi-gcc -o gello hello.c

Имея это в виду, вы можете скомпилировать ядро:

git clone --depth 1 git://github.com/raspberrypi/linux.git
cd linux
ssh root@alarmpi zcat /proc/config.gz > .config
make -j 8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig -k

Вы можете использовать distcc для выполнения сборок на платформе pandaboard, но он может делегировать компиляцию вашей коробке x86, которая будет использовать ваш кросс-компиляторный набор инструментов для компиляции для arm. На обеих руках и x86:

pacman -S distcc

Сторона руки - это клиент. Отредактируйте его конфиг, /etc/makepkg.conf Рассказать это о сервере (вашей коробке x86):

BUILDENV=(fakeroot distcc color !ccache)
DISTCC_HOSTS="myx86host"
MAKEFLAGS="-j8"

J8 говорит ему использовать все ядра на i7. Отрегулируйте соответственно.

На сервере нужно настроить distccd /etc/conf.d/distccd разрешить клиенту подключиться, а затем запустить distccd демон. Затем вы запускаете свои сборки с клиента.

Инструмент makepkg для сборки пакетов Arch заботится о связи distcc. Если вы создаете свои собственные пакеты, я предлагаю вам обернуть их в PKGBUILD, чтобы сделать работу за вас.

(вам может понадобиться настроить некоторые из вышеперечисленных для жесткого плавающего, если ваша доска использует его)

Другие вопросы по тегам