我正在尝试编译一个通过here
给出的hello world模块我已按照以下步骤操作。
当我运行insmod命令时,我收到此错误
insmod: error inserting 'hello.ko': -1 Invalid module format
如何解决此错误?
此致
答案 0 :(得分:1)
好的,你犯的错误是内核版本。
首先尝试
uname -r
你会得到内核版本。下载的版本很可能不是您系统的内核版本。 所以将make文件更改为
ifeq ($(KERNELRELEASE),)
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
.PHONY: build clean
build:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c
else
$(info Building with KERNELRELEASE = ${KERNELRELEASE})
obj-m := hello.o
endif
确保选项卡符合上述脚本中提到的顺序。
答案 1 :(得分:0)
您的内核模块必须与正在运行的内核匹配。例如,如果要安装此特定模块,则还需要安装已构建的内核。
通常,您不会自己构建内核并使用与您的发行版内核匹配的预构建版本。在您的发行版的存储库中查找kernel-headers
包。