Здравствуй, мир! Сборка.

Практически у всех программистов первой программой была Hello, world! Она говорила — Здравствуй, мир! и завершалась. Первый дистрибутив на базе OpenEmbedded будет делать то же самое. Но для этого придется немного попотеть.

Вам потребуется следующее:

  • Компьютер с установленным дистрибутивом Linux Ubuntu.
  • Желание установить и умение читать.
  • Интернет канал, желательно безлимитный.

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

sudo apt-get install make gcc g++ ccache sed wget cvs \
subversion git-core git coreutils unzip texi2html texinfo \
libsdl1.2-dev docbook-utils gawk python-pysqlite2 \
diffstat help2man libxml2-utils xmlto \
python-psyco linux-headers-`uname -r`

В случае если у вас достаточно быстрый интернет, то установка займет где-то полчаса. Если же нет, то это отнимет больше времеи.

Как только все программы установятся, cоздаем каталог для опытов и переходим в нее:

exit
mkdir -p ~/stuff/build/conf
cd ~/stuff

Далее установливаем bitbake. Для этого с сайта bitbake скачиваем и распаковываем последний релиз:

wget http://download.berlios.de/bitbake/bitbake-1.8.12.tar.gz
tar -xzvf bitbake-1.8.12.tar.gz
mv bitbake-1.8.12 bitbake

Следующим шагом идет получение репозитория OpenEmbedded. Для его получения запускаем:

git clone git://git.openembedded.net/openembedded

Если вдруг доступен только http (злые админы закрыли интернеты) то пробуем получить его через http:

git clone http://repo.or.cz/r/openembedded.git

Note:
В дальнейшем для обновления репозитария будет достаточно перейти в каталог stuff/openembedded:

cd ~/stuff/openembedded
git pull

Учтите, репозиторий довольно большой, так что качается довольно долго. Когда он скачается, необходимо создать конфигурационный файл сборки. Воспользуемся примером из репозитория:

cd ~/stuff/
cp openembedded/conf/local.conf.sample build/conf/local.conf

Далее откройте файл в редакторе и измените значения следующих переменных:

BBFILES = "${HOME}/stuff/openembedded/recipes/*/*.bb"
DL_DIR = "${HOME}/stuff/sources"
DISTRO = "angstrom-2008.1"
MACHINE = "x86"

А в конце файла удалите строку:

REMOVE_THIS_LINE

сохраните файл.
Теперь необходимо настроить окружение. Сначала указываем где у нас находится bitbake

export PATH=${PATH}:${HOME}/stuff/bitbake/bin

затем указываем bitbake где искать репозиторий и файл конфигурации

export BBPATH=${HOME}/stuff/build:${HOME}/stuff/openembedded

И наконец запускаем сборку hello world:

bitbake helloworld-image

Если в результате запуска появилось нечто такое:

NOTE: Handling BitBake files: / (6291/6291) [100 %]
NOTE: Parsing finished. 6027 cached, 0 parsed, 264 skipped, 0 masked.
NOTE: build 200812252310: started
 
OE Build Configuration:
BB_VERSION        = "1.8.10"
METADATA_BRANCH   = "org.openembedded.dev"
METADATA_REVISION = "5b1ed09b1ab1a60a28a76e4658bc9957cd361b5d"
TARGET_ARCH       = "i486"
TARGET_OS         = "linux"
MACHINE           = "x86"
DISTRO            = "angstrom"
DISTRO_VERSION    = "2008.1-test-20081225"
TARGET_FPU        = ""
 
NOTE: Resolving any missing task queue dependencies
NOTE: Preparing runqueue
NOTE: Executing runqueue

то можете себя поздравить, bitbake и openembedded установленны правильно. Вам осталось подождать пока bitbake соберет все что необходимо.

— Стоп! А как это теперь запустить?
А вот об этом в следующий раз :)

Рубрика: Практика | Теги: , комментария 62 »

комментария 62 к “Здравствуй, мир! Сборка.”

  1. Андрей

    Доброго всем дня!

    …..
    DEBUG: Not caching /home/cooper/stuff/openembedded/recipes/shr/elementary-theme-sixteen_git.bb, marked as not cacheable
    DEBUG: Not caching /home/cooper/stuff/openembedded/recipes/dzen2/dzen2_svn.bb, marked as not cacheable
    DEBUG: Not caching /home/cooper/stuff/openembedded/recipes/linux/linux_git.bb, marked as not cacheable

    Command execution failed: Traceback (most recent call last):
    File «/home/cooper/stuff/bitbake/lib/bb/command.py», line 85, in runAsyncCommand
    self.cooker.updateCache()
    File «/home/cooper/stuff/bitbake/lib/bb/cooker.py», line 829, in updateCache
    if not self.parser.parse_next():
    File «/home/cooper/stuff/bitbake/lib/bb/cooker.py», line 1022, in parse_next
    raise ParsingErrorsFound
    ParsingErrorsFound

    такая вышла ошибка. может кто знает в чем дело.

  2. Андрей

    отбой
    переключился на стабильную версию и все заработало
    git checkout -b stable/2009 origin/stable/2009

  3. Андрей

    эта версия тоже до конца не дошла. перешел на тест2011.03 эта дошла до конца. но теперь убунта говорит что виртуального бокса нету. приходится извращаться. читаю про поки
    http://www.pokylinux.org/releases/pinky-3.1/doc/poky-handbook.html#usingpoky-extend-customimage
    что бы запустить свое хеллоу.

    интересно чем народ сегодня в этом плане увлекается, что то тихо тут стало?

  4. DMF

    Приветствую.
    У меняя такой вопрос: А что делать тем. у кого нет машины i386?
    Вот что мне выдал терминал:
    sudo apt-get install make gcc g++ ccache sed wget cvs \
    > subversion git-core git coreutils unzip texi2html texinfo \
    > libsdl1.2-dev docbook-utils gawk python-pysqlite2 \
    > diffstat help2man libxml2-utils xmlto \
    > python-psyco linux-headers-`uname -r`
    Чтение списков пакетов… Готово
    Построение дерева зависимостей
    Чтение информации о состоянии… Готово
    Пакет python-psyco недоступен, но упомянут в списке зависимостей другого пакета.
    Это может означать, что пакет отсутствует, устарел, или доступен из источников, не упомянутых в sources.list

    E: Для пакета python-psyco не найден кандидат на установку
    Обе машины у меня х64… (((

  5. norguhtar

    Для начала указать какой у вас дистрибутив.

  6. DMF

    Ubuntu 11.04 (natty) amd64
    python-psyco только i386 нашёл — естественно, он не установился.

  7. Александр

    Только начал разбираться с Lunux и его всроенными вариантами, поэтому вопрос может быть детский.
    При попытке запустить bitbake helloworld-image постоянно вываливается ошибка
    ERROR: global name ‘bb’ is not defined while parsing

    Подскажите, что нужно докрутить.
    Работаю под Kubuntu 10.04

  8. norguhtar

    Смените ссылку /bin/sh с dash на bash и все заработает.

  9. alenyashka

    Здравствуйте,

    пытаюсь собрать все как написано. При сборке sqlite3 получаю ошибки вида «sqlite3.c:914:1: error: unknown type name ‘sqlite_int64′».
    Полный лог сборки тут http://alexanis.dyndns.org/files/log.do_compile.3892

    Подскажите, пожалуйста, в чем проблема?

  10. Евгений

    Вылетает с ошибкой «ERROR: Error parsing /home/faust/stuff/openembedded/recipes/images/neuros-osd-base-image.bb: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass»

  11. Андрей

    Добрый день!
    Подскажите, если знаете, как реагировать на ошибку:
    ERROR: Please set the ‘PERSISTENT_DIR’ or ‘CACHE’ variable.

    В ответ на попытку:
    bitbake -DD helloworld-image

    Заранее спасибо!

  12. avis

    Буду еще одним.
    ERROR: global name ‘bb’ is not defined while parsing

    echo $SHELL — /bin/bash
    ls -l /bin/sh — bash
    echo $PYTHON_PATH — вот она пустая.

    Чтобы поставить psyco перепробовал 13.04, 12.04, установилось на 10.04, но проблема с bb осталась. Подскажите в чем может быть затык


Прокоментировать



 

Наверх