xinyun001
驱动牛犊
驱动牛犊
  • 注册日期2006-11-27
  • 最后登录2010-01-02
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:3091回复:12

关于Linux设备驱动第三版中的hello模块的编写

楼主#
更多 发布于:2007-08-22 21:31
我安装的是FC7,内核的版本好像是2.6.21-1的,用uname -r 显示的版本是
2.6.21-1.3194.fc
所以我在我的系统里面安装了2.6.21-1版本的内核源码。并且编译和安装了模块。
将书上的程序运行了一下。其中将makefile文件里面的路径改成了我刚才安装的路将

编译也能够产生源代码,但是有很多的警告,说是不匹配。
具体的显示是:
WARING: vmLinux -Section mismatch :refrence to .init.text: _ alloc_bootmen from .text between 'init_gdt' (at offset 0xc100a8a9) and 'CPU_init'
……
这样的警告还有很多。但是能够生成文件hello.ko

安装时的时候用
insmod  ./hello.ko
显示的是安装错误,

insmod : error inserting 'hello.ko' :-l Invlid module format
xinyun001
驱动牛犊
驱动牛犊
  • 注册日期2006-11-27
  • 最后登录2010-01-02
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-08-23 19:46
这边也没有人回答吗
xinyun001
驱动牛犊
驱动牛犊
  • 注册日期2006-11-27
  • 最后登录2010-01-02
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-08-23 22:30
kellyp
驱动牛犊
驱动牛犊
  • 注册日期2006-11-22
  • 最后登录2007-09-08
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望15点
  • 贡献值0点
  • 好评度14点
  • 原创分1分
  • 专家分0分
地板#
发布于:2007-08-24 22:19
  是你的makefile 没有写对
 需要指定你的内核路径
xinyun001
驱动牛犊
驱动牛犊
  • 注册日期2006-11-27
  • 最后登录2010-01-02
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-09-03 09:40
这个我已经指定了
但是我指定的内核的路径的话只是指定了一个自己下载过来安装了模块的路径,不是现在在运行的那个内核。指定的内核的话我也没有进行安装。这样会有影响吗
mantian
驱动牛犊
驱动牛犊
  • 注册日期2005-08-09
  • 最后登录2009-11-04
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-09-04 20:40
insmod -f  *.ko试试呢
:)
rockxie
驱动牛犊
驱动牛犊
  • 注册日期2007-07-11
  • 最后登录2007-10-11
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-09-17 16:17
[url=http://www.code.sh]code.sh[/url]收藏,分享代码
Kevin1217
驱动牛犊
驱动牛犊
  • 注册日期2007-08-26
  • 最后登录2007-09-24
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-09-24 12:48
呵呵,初学者在弄这个hello模块时总是会遇到很多问题,我当时也是遇到了这种那种的怪问题,主要是内核没有编译好。
好好学习,天天向上
caorr
驱动牛犊
驱动牛犊
  • 注册日期2005-03-24
  • 最后登录2007-10-24
  • 粉丝1
  • 关注1
  • 积分131分
  • 威望19点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-10-22 12:14
内核没有编译好,安装源码数的时候,有没有make modules; make modules-install?
lbzhao_28
驱动牛犊
驱动牛犊
  • 注册日期2006-07-26
  • 最后登录2008-11-21
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-12-24 12:03
同意,就是内核没有编译好.重新编译就好啦.
wave.lu
驱动牛犊
驱动牛犊
  • 注册日期2007-11-29
  • 最后登录2008-01-02
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2008-01-02 12:59
引用第8楼caorr于2007-10-22 12:14发表的  :
内核没有编译好,安装源码数的时候,有没有make modules; make modules-install?

编译好kernel代码就可以,不需要安装。模块出错的原因在于如果没有执行配置内核配置,会缺少部分文件,导致你编译外部模块时出错。
另外,建议使用modprobe module.ko的方式,我遇到过复杂模块,直接insmod的方式也会出类似错误。
wave.lu
驱动牛犊
驱动牛犊
  • 注册日期2007-11-29
  • 最后登录2008-01-02
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2008-01-02 13:04
引用第8楼caorr于2007-10-22 12:14发表的  :
内核没有编译好,安装源码数的时候,有没有make modules; make modules-install?

编译好kernel代码就可以,不需要安装。模块出错的原因在于如果没有执行配置内核配置,会缺少部分文件,导致你编译外部模块时出错。
另外,建议使用modprobe module.ko的方式,我遇到过复杂模块,直接insmod的方式也会出类似错误。
xaxiao
驱动小牛
驱动小牛
  • 注册日期2007-09-11
  • 最后登录2010-02-10
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望199点
  • 贡献值0点
  • 好评度197点
  • 原创分2分
  • 专家分0分
12楼#
发布于:2008-03-30 09:46
没通过
游客

返回顶部