14.06.2013, 21:33 | #1 |
Старший Пользователь
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
|
Компилируем нативный код под Андроид
Поскольку я недавно приобрёл новый девайс на базе 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 <stdio.h> 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! Дальше буду пытаться компилировать модуль. Последний раз редактировалось AngelOfGrief; 14.06.2013 в 23:36. |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|