我制作了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
答案 0 :(得分:0)
您尝试将模块加载到内核中,因为它(模块)尚未构建。或者您为一个内核构建模块,但将KBUILD_EXTRA_SYMBOLS与Module.symvers
文件一起使用,为另一个内核创建。
如果您需要将KBUILD_EXTRA_SYMBOLS与内核 Module.symvers file
一起使用,那么某些地方的内核肯定会混乱。