Linux模块版本错误"模块格式无效"

时间:2015-05-20 06:06:11

标签: linux module kernel insmod

我制作了Linux外部模块,因为我的模块需要Linux内核符号,

我设置了Modversion配置并制作它。(也做了modules_install)

我的模块完全是在lib / modules /(我的linux)/ extra /

中完成的

但是当我插入我的模块时,shell会输出错误消息

insmod: ERROR: could not insert module oxen_aggregator_module.ko: Invalid module format

这是dmesg内容

[  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.symvers只有0x00000000个地址。

你可以帮帮我吗?我怎么解决?

我的Make文件

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

1 个答案:

答案 0 :(得分:0)

您尝试将模块加载到内核中,因为它(模块)尚未构建。或者您为一个内核构建模块,但将KBUILD_EXTRA_SYMBOLS与Module.symvers文件一起使用,为另一个内核创建。

如果您需要将KBUILD_EXTRA_SYMBOLS与内核 Module.symvers file一起使用,那么某些地方的内核肯定会混乱。