android編譯內核模塊

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就会出现!!!!!

你可能感兴趣的:(android,kernel module,交叉編譯,內核模塊,驅動)