我制作了 Linux 外部模块,因为我的模块需要 Linux 内核符号,
我设置了 Modversion 配置并制作它。(也制作了 modules_install)
我的模块完全是在 lib/modules/(my 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 地址。
你可以帮帮我吗?我该如何解决?
我的制作文件
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