linux编译模块的内核版本和现在使用的内核版本不一致的话,怎么将现在使用的内核版本配成编译所要的???
insmod:errorinserting'./hello.ko':-1Invalidmoduleformat...
insmod: error inserting './hello.ko': -1 Invalid module format
展开
1个回答
展开全部
修改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:
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看下模块的版本,再编译一套和模块版本相同的内核烧上。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |