Модуль кросс-компиляции LKM для платформы Android - PullRequest
2 голосов
/ 31 января 2011

По соображениям работы мне нужно разработать LKM для платформы Android. Я не очень уверен, как кросс-компилировать мой AndroidModule.c и какие инструменты для этого использовать. Я предполагаю, что мне понадобится исходный код Android, чтобы сказать компилятору связать библиотеки оттуда, верно? Мне также нужно будет скачать компилятор ARM для Android. Я думаю, что с этими тремя вещами достаточно (LKM-код на C, Android Source Code, ARM-компилятор для Android). Проблема в том, что я не могу найти учебник, который объясняет, как скомпилировать LKM для Android. Я буду очень рад получить больше информации об этом.

Ответы [ 3 ]

1 голос
/ 05 февраля 2011

Вот make-файл, который я использую для сборки модулей для Android.Я предполагаю, что у вас есть копия исходного кода linux и что вы собрали ядро ​​для своего телефона.В директории вашего модуля я поместил Makefile так:

ifneq ($(KERNELRELEASE),)
    obj-m := mymod.o
else
    COMPILER ?=/pathtoandroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
    CROSS_COMPILE ?=$(COMPILER)
    ARCH ?=arm
    KERNELDIR ?= /home/kernel/androidkerneldir/
    PWD := $(shell pwd)
    EXTRACFLAGS += -I$(PWD)/somedirectory/shomewhere
default:
    $(MAKE) -C $(KERNEL_DIR) M=`pwd` ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) EXTRA_CFLAGS=$(EXTRACFLAGS) modules
clean:
    rm *.o *.ko
install:
    adb push mymod.ko /system/lib/modules

Это должно сделать это для вас.Убедитесь, что у вас есть права на запись в каталог / system.

0 голосов
/ 01 февраля 2011

Это должно помочь.

Для кросс-компиляции модуля вам понадобится исходный код ядра и компилятор ARM, который находится в цепочке инструментов Android.Вам понадобится Makefile что-то вроде

obj-m:= AndroidModule.o

all: module

module:
    $(MAKE) -C $(KERNELSRC) SUBDIRS=$(PWD) modules
clean:
    $(MAKE) -C $(KERNELSRC) SUBDIRS=$(PWD) clean
    @rm -f Module.symvers Module.markers modules.order

Затем скомпилируйте, настроив CROSS_COMPILE в качестве компилятора ARM и KERNELSRC в качестве исходного местоположения ядра, и вызовом make.Вот команда, которую я использую на 0xdriod.

CROSS_COMPILE=~/beagle-eclair/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- ARCH=arm KERNELSRC=~/kernel make
0 голосов
/ 01 февраля 2011

Попробуйте URL-адрес Android , в нижней части которого приведены подробные инструкции по сборке исходного кода.

Затем следуйте этому URL для окончательного построения (это для релиза мечты), я предполагаю, что процедура должна быть в силе и для других выпусков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...