compiled android kernel module:
1.下載你所要應用的對應的內核源碼,下載交叉編譯器工具。
2.mkdir ./test ./out ./source ./tools
3.cp kernel.gz to ./test
cp cross-compile tools to ./tools(eg:arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2)
cp source code to ./source
touch Makefile into ./source:obj-m +=*.o
4.cd ./test
make ARCH=arm CROSS_COMPILE=../tools/~/bin/arm-embi- O=../out *_defconfig
5.cd ../out
make ARCH=arm CROSS_COMPILE=../tools/~/bin/arm-embi- modules
6.make ARCH=arm CROSS_COMPILE=../tools~/bin/arm-embi- M=../source
7. 此時你可以在你的source目錄中找到你的*.ko
补充:
整个流程如上,有些简略,下面我再详述一下。
1.请分清你要运行在何种设备上,然后下载对应的kernel。可以通过adb shell命令打开终端,在其中输入uname -ra来查看设备的内核版本,使用对用的内核来build你的kernel module。最好是登陆设备提供商的开发网站下载对应kernel。
2.在你需要的目录创建文件夹,可以像上面2中使用的那样分开创建,便于管理。./test文件夹我对应放入的是kernel,./out是用来自定义的kernel生成的相关文件,./source用来对应你要build的源码,./tools对应放入你的交叉编译工具。
3.你的.c源文件要对应创建一个Makefile,其内容可以只写obj-m +=modulename.o
4.进入你的内核文件夹输入命令make ARCH=arm CROSS_COMPILE=~/tool/~/bin/arm-embi- O=~/out tegra3_defconfig,注意最后的tegra3_defconfig对应为你的处理器,比如qsd8625_defconfig
5.进入out目录输入make ARCH=arm CROSS_COMPILE=~/tool/~/bin/arm-embi- modules,此时会buid此目录下的modules
6.同样在out目录输入上面对应的6对应的命令,完成后你的kernel module就会出现!!!!!