2011-01-31 18 views
2

作業上の理由から、私はAndroidプラットフォーム用のLKMを開発する必要があります。私はAndroidModule.cをどのようにクロスコンパイルするのか、またそのためにどのようなツールを使うべきかについてはあまりよく分かりません。コンパイラにライブラリをリンクするように指示するために、Androidのソースコードが必要になると思いますか? Android用のARMコンパイラもダウンロードする必要があります。 私はこれら3つのことで十分だと思います(LKMコードはC、Androidソースコード、アンドロイド用ARMコンパイラ)。 問題は、Android用のLKMをコンパイルする方法を説明するチュートリアルが見つかりません。 私はそれについてもっと詳しく知ってうれしく思います。Androidプラットフォーム用クロスコンパイルLKMモジュール

答えて

0

下部にAndroid URLをお試しください。ソースをビルドする方法の詳細な手順が記載されています。

最後に、this URLの最終ビルドに従ってください(これは夢のリリース用です)。私はこの手順を他のリリースにも適しているはずです。

0

Thisが役立ちます。

モジュールをクロスコンパイルするには、カーネルソースコードとAndroidツールチェーンにあるARMコンパイラが必要です。あなたは、カーネルソースの場所としてARMコンパイラとKERNELSRCとしてCROSS_COMPILEを設定し、作る呼び出すことによって、コンパイル後

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 

の線に沿ってMakefileの何かをする必要があります。ここに私が0xdriodで使うコマンドがあります。

CROSS_COMPILE=~/beagle-eclair/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- ARCH=arm KERNELSRC=~/kernel make 
1

ここでは、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ディレクトリへの書き込み権限があることを確認してください。

関連する問題