位置: 编程技术 - 正文
推荐整理分享insmod: init_module 'hello.ko' failed (Exec format error),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
在经过重新编译的goldfish内核上,已经运行了安卓模拟器,正在动态添加自己编译的内核。
一开始的时候我从网上找了个hello.c文件,按照他的方式写了Makefile文件,但是当运行命令insmod的时候,会报错:
insmod: init_module 'hello.ko' failed (Exec format error)
期间,查了好多资料依然没有解决,然后又重新按照这篇博客的方式试了一下,竟然成功了,连接地址: obj-m := hello-yf.o hello-yf-objs := hello.o KID :=~/android-kernel/goldfish PWD := $(shell pwd) ARCH=arm CROSS_COMPILE=arm-eabi- CC=$(CROSS_COMPILE)gcc LD=$(CROSS_COMPILE)ld all: make -C $(KID) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) M=${PWD} modules clean: rm -rf *.o .cmd *.ko *.mod.c .tmp_versions 但是,我现在不知道为什么他这样写是正确的,我在研究研究。等把原理弄清楚了,在更新这篇博客,不过这个问题已经解决了。
我大概明白是为什么了,大家看这个代码:
all: make -C $(KID) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) M=${PWD} modules 我觉得这段代码是解决这个问题的关键,首先通过make -C $(KID),将当前的goldfish内核源码的本地路径指定为编译环境,然后分别给ARCH 和交叉编译的环境变量分别赋,这样的话就不会在出现上面的问题了。如果大家想要自己编译自己的内核按照,这种方式去写makefile文件的话,应该是没有问题的。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在更新一下,“M=”选项的作用是,当用户需要以某个内核为基础编译一个外部模块的话,需要在make modules 命令中加入“M=dir”,程序会自动到你所指定的dir目录中查找模块源码,将其编译,生成KO文件。这样一来生成的ko文件才能动态插入到内核中。
Android系统触屏事件传递派发浅析 之前浅显的看过事件传递的过程,但是有一些细节还是不太清除,借这次机会,可以好好的整理一下之前没有想清楚的地方.(基于android5.0源码),记录一下事
短信发送器 先欣赏下界面:页面布局xml文件:LinearLayoutxmlns:android="
Android Study Day 3 --Android File Read And Write ReadFilereadfilebypathin/data/data/appName/appPackageName/files:usemethodopenFileInput(StringfileName)ofclassContext.example:publicStringread(StringfileName)throwsException{try(FileInputStreaminput=co
标签: insmod: init_module 'hello.ko' failed (Exec format error)
本文链接地址:https://www.jiuchutong.com/biancheng/379722.html 转载请保留说明!友情链接: 武汉网站建设