linux编译模块的内核版本和现在使用的内核版本不一致的话,怎么将现在使用的内核版本配成编译所要的???

insmod:errorinserting'./hello.ko':-1Invalidmoduleformat... insmod: error inserting './hello.ko': -1 Invalid module format 展开
 我来答
sunyqg
2012-06-06 · TA获得超过1084个赞
知道小有建树答主
回答量:477
采纳率:75%
帮助的人:635万
展开全部
修改Makefile中的KDIR参数,你现在的Makefile是怎样写的?
参考Makefile:
obj-m := modules.o
modules-objs := mymod.o

KDIR=/lib/modules/`uname -r`/build
PWD =$(shell pwd)

default:
make -C $(KDIR) M=$(PWD) modules

clean:
rm -rf *.o .* .cmd *.ko *.mod.c .tmp_version
更多追问追答
追问
这个我知道了,我现在想知道不用修改makefile的话要怎么弄才行
追答
确定一下是否单纯的版本问题:
1、将你生成的模块放入到/lib/modules/`uname -r`/kernel/lib下
2、运行depmod
3、运行modprobe --force-modversion hello
如果还是报那个错误的话,那么你的编译环境中的kernel和你运行环境的kernel根本就不兼容,必须得修改编译环境中的KDIR或者KERNEL变量,指向你的运行环境的内核源码目录。
或者你用modinfo看下模块的版本,再编译一套和模块版本相同的内核烧上。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式