正确解决 Invalid module format[通俗易懂]

正确解决 Invalid module format[通俗易懂]原言 http://blog.csdn.net/dreamtdp/article/details/8036419实现 功能:在PC的LINUX实现驱动测试,不用在2440上测试解决insmod:errorinserting’hello.ko’:-1Invalidmoduleformat第一次写Linux驱动,环境搭建了好久,第一次可能是由于GCC的版本问题,编译

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原言  http://blog.csdn.net/dreamtdp/article/details/8036419

实现 功能:在PC的LINUX实现驱动测试,不用在2440上测试

解决insmod: error inserting ‘hello.ko’: -1 Invalid module format

第一次写Linux驱动,环境搭建了好久,第一次可能是由于GCC的版本问题,编译出来的驱动只能insmod,而无法rmmod

然后是make时使用的内核版本和本系统的版本不一致

导致出现insmod: error inserting ‘hello.o’ :-l invalid module format错误

 

我一直在玩开发板,下载的是linux-2.6.30内核,以前为 开发板编译驱动时,比较顺利。

而我的上位机linux系统是fedora10  实验需要,需要为我的上位机写一个驱动。可是写好了以后,

当我 insmod hello.ko时,却一直有一个错误

         insmod: error inserting ‘hello.ko’: -1 Invalid module format。

网上一查,原因很明确:编译时用的hello.ko的kenerl 不是 我的pc的kenerl版本。

但解决起来,就比较麻烦了,百度一下,说什么要重新编译pc上的内核,还要修改grub。

PC机上的驱动,其实与开发板上的驱动 一点关系都没有。

我只要以pc机的内核为基准,在makefile 那改变内核路径就可以了,可以顺利地编译了!

注意,我是在fedora10 下

cd /usr/src

ls

发现内核头文件,如下

/usr/src/kernels/2.6.27.5-117.fc10.i686

 

解决方法:为生成hello.ko

其Makefile改为如下内容:

 

###############
  1 KERNELDIR=/usr/src/kernels/2.6.27.5-117.fc10.i686  //在此添加内核路径
  2 
  3 PWD:=$(shell pwd)
  4 INSTALLDIR=$(PWD)
  5 #CC=arm-linux-gcc    
  6 CC=gcc

  8 obj-m := hello.o
  9 modules:     
 10         $(MAKE) -C $(KERNELDIR) M=$(PWD) modules  
 11 
 12 clean:     
 13         rm -rf *.o *.ko *.mod.c *.markers *.order *.symvers     
 14 .PHONY:modules clean

 

make

insmod hello.ko
看输出信息
cat /var/log/messages | tail -6
ubleshootd_t:s0 key=(null)
Oct  2 11:08:07 tdp setroubleshoot: SELinux is preventing updatedb (locate_t) “sys_resource” locate_t. For complete SELinux messages. run sealert -l 42f53b70-53bb-42db-b6cb-39c247a562ea
Oct  2 11:44:19 tdp kernel: Hello, world!!
Oct  2 11:44:19 tdp kernel: this is my hello world!!
哈哈 ,成功啦

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/175247.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • HDU 2647 Reward 【拓扑排序反向建图+队列】

    HDU 2647 Reward 【拓扑排序反向建图+队列】

  • 国内期货软件开发_正规期货外盘平台

    国内期货软件开发_正规期货外盘平台期货软件搭建-期货软件开发-期货平台搭建,要想做期货软件开发定制,网站的安全性和稳定性非常重要,要搭建一款安全有保障的期货软件,找专业的金融软件搭建公司是必不可少的,那么期货软件开发,期货平台搭建的流程特点有哪些呢?  1.要搭建好用的软件,软件的部署成本和软件的易用性要好一款成熟稳重的期货软件,要经得起时间的推敲,很多公司通过购买软件给到用户,其实他们满足不了二次开发的需求,导致软件更新和后期维护上面根本维护不了。2.要搭建期货平台,价格一定要合理,不要贪图小便宜好的期货平台搭建很多人贪图小便宜,

  • 2009-12-22 11:29 解决 jQuery 实现父窗口的问题 如window.parent.document.getElementById().innerHTML…

    2009-12-22 11:29 解决 jQuery 实现父窗口的问题 如window.parent.document.getElementById().innerHTML…

  • request对象、response对象、session对象

    request对象、response对象、session对象仅仅是一些简单知识点的罗列,当做笔记,想具体学习的话,还是要找专业的书籍看看request对象作用:获取用户提供的信息语法:是实现了ServletRequest接口类的一个实例使用表单向服务器的某个JSP页面提交信息常用方法:设置编码方式:例如(用来防止汉字乱码)request.setCharacterEncoding(“gb2312”);同效果:Stringstr=r…

  • 基于单片机的智能交通灯控制系统的设计实验_单片机控制系统红绿灯设计

    基于单片机的智能交通灯控制系统的设计实验_单片机控制系统红绿灯设计本设计采用了一套可用于智能交通灯的方案。该套设计方案采用51单片机作为系统的主控芯片,使用LED数码管,红黄绿三种颜色的发光二极管。通过对定时器的设置和中断的控制,实现交通信号灯的功能。本设计引入了车流量检测,通过在地面铺设环形线圈传感器,测量车辆通过数量,检测车流量的大小,来自动调节红绿灯的显示时间。还设置了按键模块,在紧急情况时可通过按键模块实现任一方向的可持续通行的效果,经过仿真对本文方案进行验证。测试结果表明,所设计的智能信号交通灯微机控制系统符合设计要求。……

  • 股票实时数据接口api_股票开放接口api

    股票实时数据接口api_股票开放接口api免费股票数据API接口提供沪深、香港、美国股市信息。1.沪深股市2.香港股市3.美国股市4.香港股市列表5.美国股市列表6.深圳股市列表7.沪股列表API文档:https://www.juhe.cn/docs/api/id/21,申请获取APPKEY即可调用。示例代码PHP股票数据示例Python股票数据接口调用示例C#股票…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号