Переменные

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

Есть определенные места, откуда переменные могут быть взяты и/или где могут быть использованы:

  1. Большое число переменных определено в конфигурационном файле conf/bitbake.conf - и обычно бывает полезно посмотреть в нем, какой смысл имеет та или иная переменная.

  2. Конфигурационные файлы плат и дистрибутивов в conf/machine и conf/distro обычно определяют некоторые переменные, специфичные для конкретного железа или дистрибутива. Иногда стоит посмотреть соответствующие целям конфигурационные файлы, чтобы проверить, есть ли там параметры, которые могут повлиять на рецепты, которые будут собираться.

  3. Сам по себе bitbake определяет некоторые переменные. Например, в переменной FILE содержится название обрабатываемого в данный момент рецепта. Более подробное описание устанавливаемых переменных можно найти в руководстве по bitbake.

  4. Классы, используемые посредством ключевого слова inherit, определяют и/или используют большую часть оставшихся переменных. Класс в данном случае можно назвать библиотекой, содержащей части рецепта, используемые многими другими рецептами. Для того чтобы классы были применимы в большинстве ситуаций, они обычно включают в себя большое число переменных, управляющих их работой.

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

target

Такие пакеты собираются для целевого устройства и ожидается, что они будут выполнятся на нем же.

native

Запускаются на той машине, на которой производится сборка.

cross

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