赛迪网 > IT技术 Linux > 源码开发
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

Linux驱动Invalid module format错误解决

发布时间:2008.05.09 04:09     来源:赛迪网    作者:metallica

1.编译错误(其实这个问题和 Makefile有很大关系)

2.Invalid module format 错误

3.insmod: error inserting './hello.ko': -1 File exists

开发环境

内核版本:2.6.22(我下载的最新版本)

gcc:gcc (GCC) 4.1.2

Makefile

gcc -D__KERNEL__ -DMODULE -DLINUX -I /usr/local/src/linux2.4/include -c -o hello.o hello.c

上面这种写法适合 2.4 版本的内核,在2.6下用这种写法很可能导致许多编译错误,即使编译通过也会产生 Invalid module format 错误。

2.6下正确的 Makefie 如下:

# Makefile2.6
ifneq ($(KERNELRELEASE),)
#kbuild syntax. dependency relationshsip of files and target modules are listed here.
mymodule-objs := hello.o
obj-m := hello.o 
else
PWD := $(shell pwd)
KVER ?= $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build
all:
$(MAKE) -C $(KDIR) M=$(PWD)
clean:
rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions
endif

使用上面的 Makefie 同时也解决了 Invalid module format 错误

insmod: error inserting './hello.ko': -1 File exists 错误解决

第一次insmod ./hello.ko 没有输出表示你的模块被正常载入了,后来的错误是你重复载入这个模块导致的

用命令 lsmod | grep hello 看看是不是有这个模块?

用命令 tail /var/log/messages

有 hello,world

module程序正常执行。

(责任编辑:云子)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· Linux操作系统上去掉文件属性的命令介绍 (05-08) · Linux下非Root用户不能绑定1024端口问题 (05-08)
· WindowsXP Secure CRT登录Linux乱码问题 (05-08) · Linux操作系统SSH远程登录慢的解决方法 (05-08)
· Linux管理应用技巧 amulecmd的使用方法 (05-08) · Ubuntu Linux下Virtualbox桥接网络配置 (05-07)
· CentOS Linux系统建立管理员组内一般用户 (05-07) · Linux系统中atime ctime mtime之间区别 (05-07)
· Ubuntu Linux 7.10 系统下改变域名映射 (05-07) · 实用技巧:让Linux系统有效防御ARP攻击 (05-07)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 知识亦有成熟过程 隐性知识该如何管理?
· 从平庸中脱颖而出:CIO成功的八大诀窍
· 网店新规能否继续实施 绿色数据中心绿在何处
· 通方期货CRM解决方案 房地产行业CRM解决方案
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统