您当前的位置: 首页 > 

Autism_Huang

暂无认证

  • 5浏览

    0关注

    27博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

字符驱动设备:no symbol version for module_layout 解决方法

Autism_Huang 发布时间:2022-07-04 11:38:52 ,浏览量:5

问题描述

在编写字符设备驱动模块的加载与卸载的时候,在make生成了模块之后,将.ko文件复制到文件系统lib/module/4.1.15文件夹下面,先用了depmod生成另外三个文件,然后再利用modprobe加载模块,会出现no symbol version for module_layout和Invalid module format导致无法加载模块的问题。但是网上又说什么什么内核版本和模块驱动版本不一致之类的,就导致我很迷茫。后面又找到了一个问题的原因是因为内核源码目录下缺少了一个文件:Module.symvers。

解决思路
  1. 首先利用find /-name 'Module.symvers’命令查找该文件的路径,然后发现了他在/usr/src/kernel/下系统自带的文件夹中/usr/src/linux-headers-4.15.0-29-generic/Module.symvers。
  2. 打开模块编译的Makefile,去找到如下的路径(每个人不一样,根据自己的情况更改): Makefile文件
  3. 将Module.symvers拷贝到如上图框住的路径中,然后再次编译。
  4. 编译完成后将.ko文件拷贝到lib/module/4.1.15文件夹下,先用depmod然后再用modprobe xxx.ko加载模块。(用lsmod查看是否加载成功)
运行结果

问题解决了,模块如愿加载成功。 结果图

关注
打赏
1655915590
查看更多评论
立即登录/注册

微信扫码登录

0.0357s