fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:1942回复:13

gcc的编译警告!!

楼主#
更多 发布于:2003-06-09 12:16
我使用gcc -c hello.c语句编译最简单的内核模块hello.c是出现如下警告信息: ignoring changed section attributes for .modinfo
其中hello.c是最简单的内核模块,其内容如下
#define MODULE
#include <linux/module.h>

int init_module(void){printk(\"<1>hello world \\n\");return 0;}
void cleanup_module(void){printk(\"<1>goodbye the cruel world\\n\");}
我的gcc  的版本为2.96
我的内核的版本为2.2.16-22
不知问题出自何方,请各位驱友指点!!!thinks
有了驱动,人才有了力量。
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-14 11:13
现在想来应该是的吧,我问过你之后回去想了一下,猜想可能是的吧!

你说的有道理,只是一时我还不是很明白,在看看内存管理那块吧!
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-13 15:02
我问别人什么是LDD的书,没人理我,后来我想LDD是不是就是Linux Device Device,现在什么都简称,其实是故弄玄虚。
我还没做这方面的驱动,但是我的理解是:我们使用inb,inw,outb这类的函数从设备的地址空间读取数据到内核空间,然后使用put_user,get_user这类的函数进行内核空间和用户空间的交互。
 这是我的理解不知对不对?
有了驱动,人才有了力量。
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-13 14:51
fwzfwz1:
问个问题不要笑我啊,你说的ldd的书到底是那本书啊,记得你以前也是问过,现在我还是不知道,能否说一下详细的书名啊,是不是很好,我也想买一本!

还有一个问题是关于几个空间的问题,如果我把将要用到的空间分类,应该有:内核空间、用户空间、和设备空间,那么这三个空间数据的交换是个什么机制,你弄明白了吗?

如果,是读,那么驱动程序使用kmacco()申请一段内核空间,在应用程序申请一段用户空间,那么怎样和设备空间打交道啊?
多交流!
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-13 13:39
zhangyanping:
我开始时还真是未包含#include<linux/uaccess.h>。现在可以传输数据了。只不过不是将板子的数据传输到用户空间,而是在驱动中直接将数据写到用户空间。我的板子的串行ROM被人弄丢了,现在还无法用板子做试验。
我编了一个读PCI的BAR0的小程序,LDD的书上说使用pci_enable_device启动指定的设备。但是我找不着含有pci_enable_device的头文件,不知是我的内核版本低,根本就不支持该函数还是它包含在别的头文件中。
有了驱动,人才有了力量。
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-12 20:22
对了,你有没有include <asm/uaccess.h>啊?
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-12 20:21
这样啊!
我还没有作到传输数据,而是显示通过应用程序调用我的驱动程序找到我的板卡,你的驱动可以找到你的板卡吗?

对于put_user()的理解,它主要是传送单个数据单位,而且在调用之前必须先调用access_ok,来验证一下你的用户空间指针是否可用。你也可以直接用__put_user(),呵呵,书上说的。。。

我可能明天才开始传送简单数据,希望问题不是很多,多交流!
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-06-12 16:06
这个警告没有解决,但不影响大局。现在有一个问题是:我自己编写了一个简单的驱动,用来向用户空间写数据,但是insmod时提示put_user是未定义标识符;使用copy_to_user 也是提示未定义标识符。不知为何!很苦恼呀!
有了驱动,人才有了力量。
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-06-12 11:01
fwzfwz1,这个问题解决了没有啊,我的差不多都通过了,现在问题出在使用应用程序操作驱动程序的问题上!
hnlinkun
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2016-04-05
  • 粉丝0
  • 关注0
  • 积分9449分
  • 威望49823点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-06-11 14:23
用户被禁言,该主题自动屏蔽!
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-06-11 08:44
指一下源代码的位置

  什么叫源代码的位置?
有了驱动,人才有了力量。
heqingbj
驱动小牛
驱动小牛
  • 注册日期2002-10-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-06-11 00:32
指一下源代码的位置
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-06-09 17:16
that\'s no problem for GCC 3.2.
for your gcc 2.96, you may try:

gcc -c hello.c -D__KERNEL__

这样做还是不行呀!!还是有警告出现。
有了驱动,人才有了力量。
LinuxARM7
驱动牛犊
驱动牛犊
  • 注册日期2003-01-24
  • 最后登录2004-01-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-06-09 12:24
that\'s no problem for GCC 3.2.
for your gcc 2.96, you may try:

gcc -c hello.c -D__KERNEL__
游客

返回顶部