由於工作原因,我需要爲Android平臺開發LKM。我不太清楚如何交叉編譯我的AndroidModule.c以及使用哪些工具。我想我需要Android的源代碼來告訴編譯器從那裏鏈接庫嗎? 我還需要下載適用於Android的ARM編譯器。 我認爲用這三樣東西就足夠了(C語言中的LKM代碼,Android源代碼,適用於Android的ARM編譯器)。 問題是,我找不到任何教程來解釋如何編譯Android的LKM。 我會很高興有更多的信息。爲Android平臺交叉編譯LKM模塊
2
A
回答
0
嘗試Android URL底部有詳細的指導如何構建源代碼。
然後按照this URL進行最終建築(這是爲了發佈夢想),我假設該程序也應該適用於其他版本。
0
This應該有所幫助。
要交叉編譯模塊,您需要內核源代碼和Android工具鏈中的ARM編譯器。你需要一個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
作爲內核源位置,並呼籲讓編譯。這是我在0xdriod上使用的命令。
CROSS_COMPILE=~/beagle-eclair/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- ARCH=arm KERNELSRC=~/kernel make
1
下面是我用來爲Android構建模塊的makefile。 我假設你有一個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目錄的寫入權限。
相關問題
- 1. 爲不同的平臺編譯mpirun和mpif90(交叉編譯?)
- 2. OpenSPARC T1平臺的交叉編譯器?
- 3. 多平臺C++交叉編譯器
- 4. 交叉編譯openvswitch爲Android
- 5. 交叉編譯freetype爲Android
- 6. Android交叉編譯
- 7. 交叉編譯模塊與arm-eabi-gcc
- 8. 交叉編譯Linux內核模塊
- 9. 如何交叉編譯Perl模塊
- 10. 爲MIPS平臺交叉編譯libSDL時出現的問題
- 11. 無法編譯Android的LKM
- 12. Android交叉編譯ffmpeg
- 13. Android和交叉編譯
- 14. 交叉編譯C程序爲Android
- 15. 如何交叉編譯LTP爲android
- 16. CMake:FIND_PACKAGE(線程)爲Android交叉編譯
- 17. 使用ppcrossarm交叉編譯爲Android?
- 18. 使用node-gyp將nodejs模塊交叉編譯爲Windows
- 19. 爲arm編譯交叉編譯e2fsprogs
- 20. 交叉編譯Apache用於ARM APR-util的庫 - Linux平臺
- 21. 如何交叉編譯gdbserver到不同的平臺?
- 22. 是#error指令跨平臺和交叉編譯
- 23. Windows中嵌入式平臺的交叉編譯器
- 24. ARM平臺上的嵌入式Linux的交叉編譯Clio
- 25. 交叉編譯爲Android使用NDK失敗,編譯器錯誤
- 26. 如何在Windows上爲多個平臺編譯cython模塊?
- 27. 交叉兼容/平臺C++
- 28. 問題交叉平臺rhodes
- 29. Qt交叉編譯
- 30. 交叉編譯ldd