Сборка приложений

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

Не забывайте, что все команды BitBake необходимо выполнять внутри каталога build/, или же переопределить переменную TMPDIR в файле настроек $OEBASE/build/conf/local.conf, так как вам требуется (по умолчанию используется подкаталог tmp/ относительно того каталога, в котором вы запускаете bitbake).

Замечание

Если BitBake сообщает о проблеме в настройке /proc/sys/vm/mmap_min_addr, то его значение необходимо изменить на 0. Для этого запустите от пользователя root следующую команду:

# echo 0 > /proc/sys/vm/mmap_min_addr

Использовать текстовые редакторы для изменения файлов в /proc невозможно, так как они не являются реальными файлами. Также необходимо учесть, что после перезагрузки системы, эти настройки будут потеряны. Для их автоматической установки, многие системы предоставляют файл /etc/sysctl.conf. Если он у вас есть достаточно добавить строку такого вида:

vm.mmap_min_addr=0

Если ваша система не предоставляет такого механизма, то вы можете разместить вышеприведенную команду echo в /etc/rc.local файл.

После того как, BitBake и OpenEmbedded установлены и настроены, можна запускать сборку приложений и компоновку образов при помощи следующей команды:

$ bitbake <recipe_name>

Имя рецепта соответствует файлу с таким же именем и расширением .bb. Этот файл (рецепт) является логическим блоком задач, которые выполняются bitbake. Обычно в нем описано, каким образом необходимо собрать приложение, при этом учитываются зависимости между рецептами. BitBake ищет рецепты в переменной BBFILES, которая определена в вашем файле настроек $OEBASE/build/conf/local/conf). Этот параметр представляет из себя список файлов .bb, разделяемых пробелами. В элементах списка поддерживаются маски (к примеру *.bb).

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

$ bitbake -b $OEBASE/openembedded/recipes/blah/blah.bb

Кроме рецептов для сборки приложений существует несколько наборов специальных рецептов, расположенных в подкаталогах каталога $OEBASE/openembedded/recipes/:

tasks/

Коллекция мета-рецептов, содержащих зависимости рецептов приложений для облегчения работы с наборами рецептов.

meta/

Коллекция различных полезных мета задач и рецептов, которые не вошли в основной каталог.

images/

Коллекция рецептов образов, описывающих, какие пакеты добавляются при компоновке образа для выбранной системы.

Полезные рецепты целей

BitBake позволяет собирать отдельные пакеты, но гораздо чаще сборка набора рецептов и последующая компоновка полученных пакетов в образ целевой системы является более интересной. Ниже приведены рецепты, которые часто используются в этих целях.

Images

helloworld-image

Собирает образ корневой файловой системы, cодержащий статически собранный выполняемый файл, который выводит hello world, а затем переходит в бесконечный цикл. Может использоваться для тестирования загрузки ядра Linux и последующего перехода в пространство пользователя (init).

bootstrap-image

Собирает образ, содержащий task-base пакеты.

console-image

Собирает образ без X11, gtk+, или qt библиотек.

x11-image

Собирает образ с X11.

beagleboard-demo-image

Собирает дистрибутив Ångström как необходимо Koen.

opie-image

Собирает образ на основе Open Palmtop Integrated Environment (OPIE). OPIE - это открытое графическое окружение пользователя и набор программ для мобильных устройств, использующих Linux.

opie-kdepim-image

Собирает образ на базе OPIE и полнофункциональным PIM основанном на KDE (pi-sync, ko/pi и прочее).

pivotboot-image

Собирает, образ необходимый для прошивки Sharp SL C3000, Zaurus. Он разворачивается после загрузки с NAND и завершает установку на жесткий диск во время первой загрузки.

twin-image

Собирает образ с task-base пакетами и дополнительно содержит nano, vim и почтовый клиент mutt.

uml-image

Собирает образ для использования в user-mode-linux. Включает в себя пакеты task-base и частично OPIE.

gpe-image

Собирает образ на базе GPE Palmtop Environment. GPE предоставляет окружение пользователя для наладонных компьютеров с ОС GNU/Linux или другой UNIX-like ОС.

Tasks

task-base

Собирает ядро и базовые пакеты для стандартной сборки. После установки позволит получить доступ к системе по ssh, но не более.

task-dvb

Метапакет для приложений работы с DVB (DVB = Цифровое видеовещание).

task-python-everything

Собирает все рецепты, необходимые для python.

task-native-sdk

Метапакет для сборки нативного (для использования на целевой платформе) SDK.

Meta

meta-opie

Собирает все необходимые пакеты OPIE, а так же те, которые необходимы для его работы.

meta-gpe

Собирает необходимые для gpe-image пакеты.

Другие

helloworld

Собирает статический слинкованный исполняемый файл, который выводит hello world и переходит в бесконечный цикл.

world

Собирает все доступные приложения. Это потребует очень много времени, много трафика и много дискового пространства. В процессе может сломать ваш инструментарий сборки.

package-index

Обновляет индексные файлы для их соответствия набору пакетов .ipk в каталоге репозитория пакетов. Обычно используется после сборки одиночных рецептов приложений, для обновления индекса и последующей установки из репозитория пакетов при помощи пакетного менеджера ipkg на целевой системе.

virtual/kernel

Собирает соответствующее вашей платформе ядро.