PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Разработка программ (http://pccar.ru/forumdisplay.php?f=27)
-   -   Компилируем нативный код под Андроид (http://pccar.ru/showthread.php?t=19266)

AngelOfGrief 14.06.2013 21:33

Компилируем нативный код под Андроид
 
Поскольку я недавно приобрёл новый девайс на базе Amlogic 8726-MX, а нужного мне модуля PL2303 под него нет, озаботился изучением темы компиляции модулей под конкретную реализацию Linux в Андроиде. Исходники ядра я уже нашёл, добрые люди из Amlogic выложили его в инет.

До компилирования модулей я ещё не добрался, но зато научился компилировать программы. Для этого нужен кросс-компилятор, т.е. компилятор, который либо под Windows либо под Linux скомпилирует код, который вы сможете запустить на своём устройстве.

Чем было скомпилировано ваше ядро можно узнать командой cat /proc/version

У меня пишет gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202). Sourcery -- это бесплатный компилятор С для устройств на базе процессоров ARM. Разумеется, если вы просто попытаетесь скомпилировать программу на обычном x86 Linux, она не заработает на вашем девайсе. Поэтому, качаем кросс-компилятор (это ссылки под Linux, под винду у них тоже есть!):

http://www.mentor.com/embedded-softw.../lite-edition/

Прямая ссылка:

https://sourcery.mentor.com/public/g...ux-gnu.tar.bz2

Я не стал пользоваться виндовой версией, т.к. в винде невозможно нормально распаковать исходники ядра в силу case-insensitive файловой системы. Но вы можете попробовать, если интересно. У меня же это работает под эмулятором в ОС Debian. Установить её заняло максимум 15 минут.

Распаковываем скачанное в удобную нам директорию, прописываем пути к компиляторам, они традиционно в папке bin

Далее набираем проверочную программку:

#include

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



Называем её hello.c

Далее компилируем командой:

arm-none-linux-gnueabi-gcc -mthumb -march=armv7-a -o hello hello.c -static

armv7 -- тип проца в вашем девайсе (можно указать другой, см. мануал компилятора)
-static -- не использовать динамические библиотеки. С динамическими у меня ничего не получилось, т.к. я не понял где их взять (их типа надо установить на сам девайс), а без них есс-но не пашет

Скидываем файл на девайс, не забываем сделать chmod 0744 hello
Запускаем ./hello

Hello, world!

Дальше буду пытаться компилировать модуль.


Часовой пояс GMT +4, время: 23:04.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot