EXL's Developer Blog
Translate site on my language:

Каталог статей
Меню сайта

Категории раздела

Поиск

Друзья сайта
  • MotoFan.Ru
  • Dingoo A320.Русский Ресурс
  • Motorola Gaming site
  • Android Games Development
  • ROKR E2 Developments

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Приветствую Вас, Гость · RSS 20.04.2024, 19:04

    Главная » Статьи » Cтатьи

    Мануал: Компиляция приложений для MotoMAGX OS, создание пакетов


    Для портирования и сборки приложений для нашей платформы в первую очередь нам нужны:

    1. Компьютер с Linux OS. Или Windows OS с установленным Virtual BOX/VMware Player, в крайнем случае под виндой можно воспользоваться AndLinux'ом или Cygwin'ом.
    2. SDK & Toolchains для MotoMagX + Исходники программ/приложений.
    3. Программист/Разработчик или начинающий программист (1 шт.).

    Я рассмотрю наиболее приемлемый многим начинающим разработчикам способ, с использованием популярного дистрибутива Ubuntu 11 (Linux OS) в виртуальной машине VMware Player в Windows OS. Те пользователи, у которых стоит Linux OS на компе, могут скачать SDK & Toolchains и сразу перескочить на пункт #4.
    Итак, начнём:

    1. Загрузка необходимых для разработки инструментов и файлов:

    1.1. Скачиваем ISO-образ диска Ubuntu 11. Я качал себе в городской сетке, пошарьтесь в своих тоже, может найдёте. На всякий случай, ссылка: [Download | Скачать] на скачивание с официального сайта: http://www.ubuntu.com Там вы можете выбрать любую конфигурацию под свой компьютер (amd/i386) итд.

    1.2. Скачиваем VMware Player - Скачать можно с официального сайта: [Download | Скачать] или тут: [Mirror | Зеркало]

    1.3. Скачиваем SDK & Toolchains для MotoMagX. [Download | Скачать] - полная версия, включающая в себя 2 тулчейна SDL (От испанцев) + QT (От Ant-On'a) а так же python, bennugd, boost и множество различных библиотек. Инструкция по установке есть внутри или ниже можно прочитать подробно.
    Тем, кто хочет разрабатывать приложения на SDL, можно скачать небольшой тулчейн для сборки приложений: [Download | Скачать] [Mirror | Зеркало]

    2. Мануалы по установке VMware, Ubuntu и SDK & Toolchains в картинках:*
    * - картинки открывать лучше всего в новом окне, нажав колёсико мышки. После открытия воспользуйтесь масштабированием, например в стандартном просмоторщике картинок.

    2.1. Установка программы VMware для самых маленьких.
    2.2. Установка Linux OS в программу VMware, на примере Ubuntu 11.
    2.3. Установка дополнительных инструментов (VMware-tools) в Ubuntu 11. Необходимо для перемещения файлов между Ubuntu в виртуальной машине и виндой.

    2.1.:    2.2.:    2.3.:


    3. Мануалы по установке, текстом.

    3.1. Установка VMware-tools для Ubuntu 11.
    3.1.1. Стартуем Ubuntu 11, вверху нажимаем "Virtual Machine", затем "Install VMware Tools...
    3.1.2. Ждём загрузки инструментов (нужно подключение к интернету!), затем снова вверху нажимаем "Virtual Machine" -> "Install VMware Tools...
    3.1.3. С открывшегося диска копируем архив в формате *.tar.gz например в /home/user (user - ваше имя при установке Ubuntu), распаковываем его.
    3.1.4. Запускаем терминал и выполняем в нём следующее:
    Code

    cd /home/user/vmware-tools-distrib
    sudo ./vmware-install.pl

    После команды sudo надо ввести пароль, который мы указывали при установке Ubuntu.
    3.1.5. Умный скрипт сам предложит вам вводить нужные значения (в квадратных скобках), вводите их.
    3.1.6. После успешной установки инструментов, перезагрузите компьютер.
    3.1.7. Данные инструменты помогут с лёгкостью переносить файлы из Windows в Linux Ubuntu, просто копируя их или перенося из окна в окно, как вы это делали в Windows. Кроме того, появится множество разрешений для экрана системы.

    3.2. Общие папки между системами для обмена файлами.
    3.2.1. Стартуем Ubuntu 11, вверху нажимаем "Virtual Machine", затем "Virtual Machine Settings"
    3.2.2. Переходим на вкладку "Options", выбираем "Shared Folders"
    3.2.3. Переключатель "Folder sharing" ставим в положение "Always enabled", нажимаем кнопку "Add".
    3.2.4. На компьютере выбираем любую папку, добавляем её, жмём ОК.
    3.2.5. Теперь в Ubunte, в папке /mnt/hgfs видим добавленную нами папку из Windows.

    4. Установка SDK & Toolchains.

    4.1. Скачиваем архив тулчейна (*.tar.gz), перемещаем его в папку /home/user (user - ник при установке Ubuntu).
    4.2. Выполняем команды, новая строка - Enter, вместо user естественно пишем своё имя, после команды sudo потребуется ввести пароль, который мы указывали при установке Ubuntu.
    Code

    sudo mkdir /mmc
    sudo chown user -R /opt
    sudo chown user -R /home
    sudo chown user -R /mmc
    sudo ln -s -d /opt/toolchains/motomagx/arm-eabi -t /
    mkdir /opt/toolchains
    mkdir /home/z6
    mkdir /mmc/mmca1
    tar -C /opt/toolchains -xzvf /home/user/motomagx-toolchains_12_08_2011.tar.gz
    cp /opt/toolchains/motomagx/setenv-z6.sh /home/z6
    cp /opt/toolchains/motomagx/setenv-z6-2.sh /home/z6

    4.3. Обратите внимание на имя скаченного вами архива с тулчейном! Именно его нужно вводить в восьмой строке кода, приведённого выше!
    4.4. Установленный тулчейн:


    5. Запуск окружения, компиляция программ и helloworld'a.

    5.1. Чтобы запустить окружение для компиляции под MotoMagx, достаточно выполнить в терминале следующее:
    Code

    cd /home/z6
    . setenv-z6.sh

    После этого, компиляторы, библиотеки и хэдеры будут браться из нашего тулчейна, а не с компьютера.

    5.2. HelloWorld.
    5.2.1. Создаём пустой файл с именем hello.c в папке /home/z6 (Правой клавишей по пустому месту, "Create Document" -> "Empty File")
    5.2.2. Редактируем его содержимое следующим образом, сохраняем:
    Code

    // Hello World for Motorola Magx!

    #include <stdio.h>

    int main(void)
    {
      printf ("Hello Moto!!!\n");
      return 0;
    }

    5.2.3. Компилируем:
    Code

    cd /home/z6
    arm-linux-gnueabi-gcc hello.c -o hello

    5.2.4. Полученный исполнительный файл "hello" кидаем на телефон и запускаем через телнет!
    Code

    Mobilinux(TM) 4.1  
    Welcome 2 Motorola ZN5!
    [root@Symbiosis ~]
    #> /mmc/mmca1/hello
    Hello Moto!!!


    5.3. Работа с утилитой Make* и SDL библиотекой.
    * - Утилита Make позволяет компилировать достаточно сложные проекты. Подробнее тут: http://ru.wikipedia.org/wiki/Make
    5.3.1. Скачиваем следующие исходники, распаковываем в папку /home/z6:
    [Download | Скачать]
    5.3.2. Запускаем терминал и окружение для компиляции, переходим в папку с проектом, выполняем команду make:
    Code

    cd /home/z6/ballgame_src
    make

    После выполнения команды будет выполнена компиляция проекта и создан mgx пакет. Для очистки проекта от объектного кода и бинарников, следует выполнить make clean. Для создание mgx пакета - команду make mgx.
    5.3.3. Теперь можно кинуть пакет на карту памяти и попробовать запустить. (Для SDL приложений вам потребуется установленные SDL-библиотеки!)
    5.3.4. Структура простейшего Makefile для компиляции HelloWorld'a:
    Code

    # MakeFile for HelloWorld
    # Motorola MotoMAGX

    CC = arm-linux-gnueabi-gcc  
    STRIP = arm-linux-gnueabi-strip
       
    CFLAGS = # Необходимые флаги
    LDFLAGS = # Необходимые флаги
    OPTIMIZATION = -march=armv6j -mtune=arm1136jf-s -mfpu=vfp -O2 # Оптимизация под процессор

    INCLUDE = $(CFLAGS) $(OPTIMIZATION) -I/dir # Путь к нужным хэдэрам.  
    LIBS = $(LDFLAGS) -L/dir # Путь к нужным либам

    BIN = hello # Бинарник

    all:
      $(CC) -c hello.c -o hello.o $(INCLUDE)
      $(CC) -o $(BIN) hello.o $(LIBS)
      $(STRIP) $(BIN)
    clean:
      rm -f ./*.o $(BIN)

    Если положить данный Makefile рядом с hello.c, и выполнить make, получим исполнительный файл.
    5.3.5. Замена строк, для портирования SDL проектов:
    Code

    CC:=gcc ---> CC:=arm-linux-gnueabi-gcc
    cc=gcc ---> CC=arm-linux-gnueabi-gcc
    cxx=g++ ---> CXX=arm-linux-gnueabi-g++
    ld=ld ---> LD=arm-linux-gnueabi-ld
    ar=ar ---> AR=arm-linux-gnueabi-ar
    as=as---> AS=arm-linux-gnueabi-as
    oc=oc ---> OC=arm-linux-gnueabi-objcopy
    ranlib=ranlib ---> RANLIB=arm-linux-gnueabi-ranlib
    strip=strip ---> STRIP=arm-linux-gnueabi-strip
    В INCLUDE или CFLAGS добавляем `sdl-config --cflags`
    В LIBS или LDFLAGS добавляем `sdl-config --libs` -lнеобходимая_библиотека


    5.4. Работа с утилитой configure* и SDL библиотекой.
    * - Скрипт configure создаёт Makefile и позволяет компилировать сложные проекты, состоящие из множества файлов. Подробнее тут: http://en.wikipedia.org/wiki/Configure_script
    5.4.1. Пример работы. Скачиваем исходники, распаковываем в папку /home/z6:
    [Download | Скачать]
    5.4.2. Выполняем следующее:
    Code

    cd /home/z6/PTC-demos
    ./configure --host=arm-linux-gnueabi
    make

    После этих команд у нас появятся исполнительные файлы Fire и Tunnel. Копируем их в корень карточки телефона.
    5.4.3. Запускаем через телнет следующим образом:
    Code

    export LD_LIBRARY_PATH=/mmc/mmca1/games/lib:$LD_LIBRARY_PATH
    chmod +x /mmc/mmca1/Fire
    /mmc/mmca1/Fire

    5.4.4. Для установки файлов в нужную директорию используется prefix и команда make install:
    Code

    mkdir /home/z6/test
    cd /home/z6/PTC-demos
    ./configure --host=arm-linux-gnueabi --prefix=/home/z6/test
    make
    make install

    После этого нужные нам файлы будут в папке /home/z6/test.
    5.4.5. Для чистки объектного кода и бинарников используется команда make clean, для удаления сконфигурированных Makefile'ов используется команда make distclean (полная очистка).

    5.5. Деббагер "Segmentation fault"
    5.5.1. Качаем gdb и распаковываем архив на карту памяти, в папку /mmc/mmca1/games
    Исполнительные файлы должны быть собраны с префиксом '-g' и не должны быть пострипаные
    5.5.2. Выполняем (gdb):
    Code

    ulimit -c unlimited
    ./<bin_app>
    Segmentation fault (core dumped)
    файл <core> будет создан
    ../bin/gdb ./<bin_app> <core>

    5.5.3 Выполняем (strace):
    Code

    ../bin/strace ./<bin_app>


    5.6. Скрипт запуска для SDL приложений:
    Code

    #!/bin/sh
    mypath=${0%/*}
    LIBDIR1=/ezxlocal/download/mystuff/games/lib
    LIBDIR2=/mmc/mmca1/games/lib
    LIBDIR3=$mypath/lib
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIBDIR1:$LIBDIR2:$LIBDIR3
    export HOME=$mypath
    export SDL_QT_INVERT_ROTATION=1
    cd $mypath
    sleep 1

    exec $mypath/<bin_app>

    5.6.1. Если нужен вывод лога в файл, заменяем последнюю строку в скрипте на
    Code
    exec $mypath/bin_app >$mypath/stdout.txt 2>$mypath/stderr.txt


    5.7. HelloWorld с использованием GUI и функций телефона.
    5.7.1. Скачиваем архив, распаковываем в /home/z6:
    [Download | Скачать]
    5.7.2. Выполняем:
    Code

    cd /home/z6/папка с нужным проектом
    make PLATFORM=EZX-ZN5

    или просто make
    5.7.3. Кидаем исполнительные файлы на телефон и пробуем запустить, должно получиться что-то типа этого:


    5.8. Собираем MgxBox.
    5.8.1. Скачиваем архив, распаковываем в /home/z6:
    [Download | Скачать]
    5.8.2. Выполняем:
    Code

    cd /home/z6/MgxBox/MgxBox_GUI_ru
    make PLATFORM=EZX-ZN5
    cd /home/z6/MgxBox/p7zip_9.20.1
    make all2
    make install
    cp -r /mmc/mmca1/p7zip/lib/p7zip /home/z6/MgxBox/Release/app/p7zip

    5.8.3. Кидаем папку /home/z6/MgxBox/Release на телефон и пробуем запустить бинарник в папке Release/app, если всё нормально, должно получиться что-то типа этого:


    6. Создание пакетов вручную.

    6.1. Создание MGX пакета:
    6.1.1. Создаём папку, помещаем в нее необходимые файлы (дата файлы приложения, исполнительные файлы, скрипт запуска, иконку).
    6.1.2. Создаём в папке файл "Имя папки".cfg, редактируем его содержимое следующим образом:
    Code

    Name = Test
    Exec = run.sh
    Icon = icon.png
    Author = Ant-ON
    Version = 1.0
    Comment = Port for ZN5 by EXL

    Где, Name - имя программы, Exec - запускаемый файл, Icon - иконка, Author - Автор программы, Version - Версия программы, Comment - Комментарий.
    6.1.3. Запаковываем папку в любой удобный вам архив (RAR, TAR, GZ, 7Z, ZIP), и переименовываем в "имя программы".mgx

    6.2. Создание PEP пакета:
    6.2.1. Создаём папку с именем "app", помещаем в нее необходимые файлы (дата файлы приложения, исполнительные файлы, скрипт запуска).
    6.2.2. Создаём рядом с папкой файл "description.ini", редактируем его содержимое следующим образом:
    Code

    [Actions]
    Silent=0
    InstallApp = 1  
    AddAppToMenu = 1

    [InstallApp]
    Name = Jump n Blob
    Exec = run.sh
    InstallPath = ../../mmc/mmca1/.Programs/jump_n_blob/
    AppLockable = 1
    Author = http://www.2d-retroperspectives.org | Philipp. Port by -=Strelok=-, EXL (c) MotoFan.Ru 08.01.2010  
    Version = 0.1
    Daemon = 1
    BigIcon= icon.png
    AniIcon= icon.png
    Icon= icon.png

    [AddAppToMenu]
    ParentFolder= root

    Где, Name - имя программы, Exec - запускаемый файл, Icon | AniIcon | BigIcon - иконка, Author - Автор программы, Version - Версия программы, InstallPath - Путь установки.
    6.2.3. Создаём иконку, рядом с папкой "app" и "description.ini".
    6.2.4. Запаковываем иконку, папку "app" и "description.ini" в архив формата TAR, затем сжимаем его в GZ переименовываем в "имя программы".pep

    7. Полезные ссылки, документация, наши проекты.

    7.1. Исходники, сайты с исходниками. Множество интересных проектов есть на code.google.com и sf.net
    7.1.1. Исходники проектов, базирующихся на SDL:
    libsdl.org/games
    libsdl.org/demos
    [url=http://dl.openhandhelds.org/cgi-bin/gp2x.cgi?0,0,0,0,46]http://dl.openhandhelds.org/cgi-bin/gp2x.cgi?0,0,0,0,46[/url]
    [url=http://dl.openhandhelds.org/cgi-bin/dingoo.cgi?0,0,0,0,46]http://dl.openhandhelds.org/cgi-bin/dingoo.cgi?0,0,0,0,46[/url]
    7.1.2. Исходники проектов, базирующихся на QT:
    http://www.elsix.org/index.php?w=browse - В основном там под Sharp Zaurus, но идеи создания приложений и сорцы найти можно.

    7.2. Документация, темы для прочтения:
    Пробуем портировать игры и проги сами
    Разработка софта под MOTOMAGX, начну небольшой HOWTO
    Компиляция нативных приложений под E6/A1200, Создание окружения для компиляции
    SDL библиотека
    http://plg.lrn.ru/wiki/Заглавная_Страница
    http://plg.lrn.ru/doc/sdl/index.html
    http://doc.qt.nokia.com

    7.3. Проекты:
    http://code.google.com/p/open-mgx/ - исходники программ от Ant-On'a
    http://code.google.com/p/sdl-magx/ - библиотека SDL HW для MotoMAgx от Ant-On'a
    http://code.google.com/p/zmessanger/ - нативная аська, автор Ant-On
    http://sourceforge.net/projects/qte2console/ - qte2console от DoomChisel
    http://code.google.com/p/motocakerteam/ - исходники программ от испанцев MotoCakerTeam
    http://code.google.com/p/zsoft/

    8. Мануалы данной темы:

    Если кто не может запустить ZN5Encoder в Magic box - пост #290
    Нативные заставки на основе портированных мной и Neomoto демок! - пост #291
    Мануал по установке Tmake в тулчейн, и правки созданного им MakeFile - пост #484[/color]

    © EXL for MotoFan.Ru 27.08.2011
    Категория: Cтатьи | Добавил: EXL (27.08.2011)
    Просмотров: 3154 | Комментарии: 11 | Рейтинг: 0.0/0
    Всего комментариев: 4
    4 Michaelemuff  
    0
    http://mysite.ru - http://mysite.ru

    3 RobertSagma  
    0
    http://mysite.ru - http://mysite.ru

    2 GarrettJeF  
    0
    http://mysite.ru - http://mysite.ru

    1 Fubrnaheu  
    0
    Онлайн кредиты. Как много сломанно копий. И Как много еще сломают. Небольшая статья по теме Онлайн кредитования
    утверждение кредита в режиме он-лайн очень практично в том случае, если у Вас нет времени на походы по банкам. Конечно же, не все банки предлагают такую услугу, но все же на сайтах лидирующих банков Вы сыщет нужную Вам страничку.

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

    Через интернет банки призывают оформить заявку на снятие кредита в распорядке онлайн. Однако, пока что именно это величают онлайн-кредитованием. Для этого, зайдя на сайт нужно Вам банка и найдя раздел «онлайн-сервис» или «онлайн-заявка», необходимо заполнить анкету. Если банк согласен предоставить заемщику кредит, то его оповещают об этом по телефонному аппарату, после чего просят прийти в ближайшее помещение банка, где и начинает конечное решение о выдаче денег. вестимо, такое решение принимается после проверки всех необходимых документов. Таким образом, онлайн-кредитование помогает выгадать. ant. потратить время на заполнение заявки на выуживание кредита. В остальном вся процедура является стандартной.

    Сейчас онлайн-кредиты не используют особой репутациею, так как не имеют совершенно никаких положительных сторон перед средними. Со слов банков, работа через интернет содействует спад себестоимости операций, поэтому бывает замечена вероятность рекомендовать сетевым посетителям более соблазнительные условия кредитования. Возможно, со временем это действительно осуществиться.
    http://rusbanksite.ru/%D0%B1%D0%B0%D0%BD%D0%BA-%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD-%D0%B7%D0%B0%D1%8F% D0%B2%D0%BA%D0%B0-%D0%BD%D0%B0-%D0%BA%D1%80%D0%B5%D0%B4%D0%B8%D1%82/

    Имя *:
    Email *:
    Код *:
    Copyright EXL © 2024
    Сделать бесплатный сайт с uCoz