我做了一个Linux外部模块,因为我的模块需要Linux内核符号,
我设置Modversion配置并使其生效。
我的模块是在lib/modules/(My linux)/extra/
但是当我插入模块时,shell打印错误信息
insmod: ERROR: could not insert module oxen_aggregator_module.ko: Invalid module format
这是dmesg contents
[ 341.458351] oxen_aggregator_module: version magic '3.17.8-gentoo-r1 SMP mod_unload modversions ' should be '3.17.8-gentoo-r1 SMP mod_unload '
但是我需要modversions标志,因为如果我没有设置那个标志,Module。服务器只有0x00000000个地址。
你能帮我吗?我该如何解决?
My Make file
SRCS = oxen_aggregator_module.c
OBJS = $(SRCS:.c=.o)
obj-m += $(OBJS)
KBUILD_EXTRA_SYMBOLS={/usr/src/linux-$(shell unamr -r)/Module.symvers}
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules_install
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
$(RM) Module.markers modules.order
您尝试将模块加载到内核中,但它(模块)尚未为此构建。或者您为一个内核构建模块,但是使用KBUILD_EXTRA_SYMBOLS与为另一个内核创建的Module.symvers
文件。
如果您需要使用KBUILD_EXTRA_SYMBOLS与内核的 Module.symvers file
,那么它肯定是混乱的不同的内核某处