[原创]错误提示:disagrees about version of symbol module_layout,解决方法

机器:ubuntu 12

问题描述:编译模块的时候提示错误:-1 Invalid module format

通过命令:

dmesg

发现原因其实是:disagrees about version of symbol module_layout

解决方法:

1.先检查当前安装的内核版本

uname -r

2.检查Makefile里指定的kernel源码路径,修改指向正确的路径。保证版本号一致。

LINUX_KERNEL_PATH:=/usr/src/kernels/2.6.32-358.2.1.el6.x86_64

2.1.如果在/usr/src/目录下没有当前安装的内核的源码,那么下载一份重新编译。

2.1.1 ubuntu 下执行命令:

1 sudo apt-get install linux-source

     centos和ret hat下执行命令:

1 yum install kernel-devel

2.1.2 上面命令完成后,在/usr/src目录下可以找到安装的源码。对于ubuntu来说因为下载的是源码所以得接着编译。

在源码目录执行命令(编译完成大概需要30分钟):

make

3.重新编译安装。

原因:Makefile里设置kernel源码的路径错误,没有和当前的内核版本一致,导致版本验证不通过,无法安装。

转载于:https://www.cnblogs.com/yzwd/archive/2013/03/27/2985086.html

加载`hello_drv.ko`模块时遇到"disagrees about version of symbol module_layout"错误通常是由于内核版本与模块不兼容导致的。要解决这个问题,你可以尝试以下步骤: 1. **确认内核版本**[^2]:首先确定你的硬件(如100ask_imx6ull单板)使用的Linux内核版本。这通常可以在命令行输入`uname -r`来查看。 2. **更新内核源码**:如果内核过旧,可能需要更新到与模块兼容的版本。在终端中,使用`sudo apt-get update && sudo apt-get upgrade kernel` 或者 `sudo yum update kernel`,然后安装匹配的内核源码包。 3. **重新编译内核**:如果更新内核源码包后仍存在问题,需要重新编译内核以包含模块支持。通常涉及以下步骤: ```shell make oldconfig (选择或修改配置) make modules_install sudo reboot ``` 4. **手动编译模块**:如果上述操作不可行,也可以尝试手动编译模块。确保使用与当前内核相同的版本。参考内核源码树中的文档或模块说明,编译并安装`hello_drv.ko`。 5. **模块签名问题**:有时候,模块签名也会引起此类问题。检查模块的签名文件(`*.ko.signed`),确保它们与内核版本相匹配。如果不匹配,可以尝试使用`sign-file`工具签署正确的版本。 6. **检查模块依赖**:确保模块没有依赖于尚未安装的库或者其他模块。使用`ldd`命令检查模块的依赖关系。 请注意,这些步骤可能因具体平台和情况而有所不同。执行时务必谨慎,因为错误的操作可能会导致系统不稳定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值