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

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Разработка программ

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2013, 21:33   #1
AngelOfGrief
Старший Пользователь
 
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
AngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the rough
По умолчанию Компилируем нативный код под Андроид

Поскольку я недавно приобрёл новый девайс на базе 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.
AngelOfGrief вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



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


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