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