首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无效模块格式错误

问无效模块格式错误
EN

Unix & Linux用户
提问于 2021-02-27 16:28:24
回答 1查看 3.8K关注 0票数 1

在命令make调用命令sudo insmod example1.ko之后,我将插入密码,然后出现了类似于这个insmod error: could not insert module example1.ko: Invalid module format的错误。我的ubuntu版本是5.8.0-44-generic,而example1.ko的版本是5.8.0-38-generic。也许这些版本应该和我一样?我一直在尝试将Makefile从/lib/modules/($ shell uname -r)/build更改为/lib/modules/5.8.0.-38-generic/build,但仍然是相同的错误。我不知道如何解决这个问题。

我使用命令dmesg搜索更多有关问题的信息,并发现了一些错误。

代码语言:javascript
复制
example1: version magic '5.8.0-38-generic SMP mod_unload' should be '5.8.0-44-generic SMP mod_unload'

并且有更多的六行有相同的问题和两个错误的Failed to send host log message。

我的Makefile文件是这样看的:

代码语言:javascript
复制
obj-m := example1.o

default:
  make -C /lib/modules/5.8.0-44-generic/build M=$(PWD) modules
clean
  make -C /lib/modules/5.8.0-44-generic/build M=$(PWD) clean

我运行了make clean ; make,但没有效果。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-02-28 18:36:48

对这个问题的评论导致了一个解决办法,我将在这里总结。

OP想要构建一个Linux内核模块;他们构建它是针对错误版本的内核源代码(也就是说,针对与运行中的内核不同的内核源代码版本)。这是由dmesg缓冲区的日志表示的。

要解决这个问题,您需要指向与要加载模块的内核对应的内核源。您可以在命令行上显式地这样做:

代码语言:javascript
复制
$ make -C  M=$PWD

或者创建一个执行相同操作的Makefile。

在尝试使用正确的内核源构建之前,一定要清除以前构建中的任何现有构件。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/636728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档