在Android中单独编译linux kernel驱动模块
16lz
2021-01-24
在Android中单独编译linux kernel驱动模块
本文参考了:http://blog.csdn.net/qq1084283172/article/details/56958136
2018-9-8 再次编辑
Makefile
ifneq ($(KERNELRELEASE),)obj-m += hello.oelse KERNELDIR ?= /out/target/product//obj/KERNEL_OBJ/ PWD ?= $(shell pwd) ARCH = arm64 CROSS_COMPILE=/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-.PHONY: modules cleanmodules: $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNELDIR) M=$(PWD) modules #这里还要给签名模块,具体操作见下文链接clean: @rm -rf *.o *.order *.symvers *.mod.* .*.o.cmd .*.mod.o.cmd .*.ko.cmd .tmp_versions *.koendif
product_name 是产品的名字
注意事项
1. 关于KERNELDIR的值
如果你的“内核”编译系统生成中间文件不是在out路径下,而是在如下路径:
<aosp_path>/kernel
那么KERNELDIR的值要改为路径,而不是out下面。
2.关于ARCH和CROSS_COMPILE的值
如果你的ARCH是arm不是arm64,那么你的CROSS_COMPILE的值也要改变。具体路径差不多,这里就不列出来了。
3. 签名问题
android的驱动模块都是开启了签名的。这样子直接编译好的,是不能直接用的。具体怎么签名看我的这篇博客Linux kernel模块内核签名问题解决方法
End
最后,使用make命令即可编译生成正确的hello.ko文件。
更多相关文章
- Android(安卓)studio自动下载第三方jar包速度慢的问题解决方法
- Android判断某一应用是否正在运行与判断某一Service是否正在运行
- android取得当前程序File与Cache路径!
- ubuntu 10.4 下的 android 编译环境 配置
- Android的startActivity启动出错
- Android开发:Android虚拟机启动错误Can't find 'Linux version '
- Android(安卓)ViewPager分页功能
- android通过servlet上传文件到服务器
- Android(安卓)Util工具类的封装