IBM®
Перейти к тексту
    в России и странах СНГ [изменить]    Условия использования
 
 
   
    Главная страница    Продукты    Услуги и решения    Поддержка и загрузка    Мой профиль    
Перейти к тексту

developerWorks Россия  >  Linux | Open source  >

Разработка программного обеспечения для телефонов OpenMoko под управлением Linux

Открытая бесплатная платформа для мобильных коммуникаций

developerWorks
На предыдущую страницуСтраница 5 из 13 На предыдущую страницу

Опции документа

Обсудить

Исходные тексты примера


Выскажите мнение об этом учебном пособии

Помогите нам улучшить содержание


Сборка простого приложения

Добро пожаловать в OpenEmbedded

Поскольку OpenMoko была создана с помощью OpenEmbedded, то наиболее правильным способом сборки тестового приложения будет использование OpenEmbedded. Чтобы сосредоточиться на главном, начнем с приложения для командной строки, проверяющего правильную работу инструментов.

Создание директории пакета

Из предыдущего раздела вы узнали о директории openembedded/packages, в которой хранятся существующие пакеты. Пришло время добавить собственную директорию. Как правило, пример программы называется hello, поэтому начнем с неё; создайте в openembedded/packages директорию "hello" и создайте в ней вложенную директорию "files." Фактически вам нужно всего два файла—параметры BitBake и исходный файл для вашей программы.

Привет, пример программы!

От нашей простой программы ничего особенного не требуется; просто какой-нибудь вывод, чтобы можно было проверить, что она работает. Вот мой пример, сохраненный как hello/files/hello.c:


Листинг 1. Пример программы
                    
#include <stdio.h>

int main(int argc, char *argv[]) {
   puts("Help!  I'm trapped in a sample program factory.");
   return 0;
}

Параметры bitbake

Перейдем к деталям: параметрам bitbake. К счастью, большая часть работу уже проделана, и нам осталось самое лёгкое. По своей сути, параметры bitbake представляют собой особый сценарий командного процессора (если быть более точным, сценарий python, содержащий команды командного процессора); вот пример, соответствующей приведенной выше программе, я назвал его hello_0.0.bb:


Листинг 2. Пример параметров bitbake
                    
DESCRIPTION = "Tutorial example"
PR = "r0"
SRC_URI = "file://hello.c"
do_compile() {
        ${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/hello.c -o hello
}
do_install() {
        install -m 0755 -d ${D}${bindir}
        install -m 0755 ${S}/hello ${D}${bindir}
}

Задание переменных

Параметры начинаются с задания трёх переменных. Их описание достаточно прозрачно. PR определяет редакцию—ниже я разъясню это. SRC_URI должен содержать URI, указывающий на файл. Должно быть, вы обратили внимание, что здесь в URI file:// не используется третья косая черта—это сделано потому, что bitbake достаточно умен для того, чтобы автоматически выполнять поиск в директории files. Если вы укажете третью косую черту, вы получите запрос на файл hello.c, расположенный в корневой папке вашего локального диска.

Редакции

Самая запутанная часть - самая короткая: переменная PR, которая используется для обозначения редакции проекта. Если вы внесете изменения в файл, но не тронете переменную PR, bitbake не сможет понять, что вы хотите его обновить. Начните с r0 и спокойно увеличивайте число. Например, если даже если сборка завершилась ошибкой (например, из-за опечатки в исходном файле), обновление файла не приведет к копированию новой версии в сборку до тех пор, пока не будет изменен PR.

делай_то, делай_сё

Функция do_compile() задает инструкции по компиляции программы. Эти инструкции могут быть сложными и простыми; в нашем случае, они очень простые. Обратите внимание на множество предварительно определенных переменных, которые вы можете использовать для автоматической корректировки параметров сборки. Аналогичным образом после сборки программы запускается do_install() для копирования файлов в нужную папку целевой файловой системы. Будьте осторожны с режимами; в примере файла bitbake, с которого я начал, в качестве режима для кода цели значится 0644 (владелец имеет права на чтение и запись, его группа и прочие пользователи -- на чтение), но без прав на выполнение от него немного толка.

Добавление пакета

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

DISTRO_EXTRA_RDEPENDS += "hello"

Обратите внимание, что название переменной заканчивается RDEPENDS, а не DEPENDS. Эта строка говорит bitbake о необходимости добавить в дистрибутив пакет hello (описанного приведенным выше файлом bitbake).

Повторная сборка

Чтобы выполнить сборку с новым пакетом, запустите make update, а затем make openmoko-devel-image. После этого вы можете использовать новый образ либо в телефоне, либо в QEMU. (В QEMU для "прошивки" виртуального телефона используйте make flash-qemu-local и make run-qemu-snapshot для его запуска.) Запуск hello в терминале должен привести к выводу информативного сообщения.

Достаточно для простейшего примера программы. Что теперь?


На предыдущую страницуСтраница 5 из 13 На предыдущую страницу
    IBM в России Конфиденциальность Контакты