LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2353|回复: 2

驱动书写-包含<linux/malloc.h>等头文件时时候报错~~

[复制链接]
发表于 2006-12-13 11:12:12 | 显示全部楼层 |阅读模式
内核 linux-2.4.20-8

操作系统:redhat9 linux-2.4.20-8是redhat自带的


在包含<linux/malloc.h>等头文件时时候报错一大堆:

这时要编译的 文件first.c)

-------------------------------------------------------
#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/malloc.h>

#include<linux/fs.h>/*
#include<linux/errno.h>
#include<linux/types.h>
#include<linux/proc_fs.h>
#include<linux/fcntl.h>
#include<asm/system.h>*/
-------------------------------------

用下面的 语句编译:
[root@jkh kernel]# gcc -o ceshi.o -DMODULE  -D__KERNEL__   -O -W -c first.c -I/usr/src/linux/include
[注:/usr/src/linux 为指向 /usr/src/linux-2.4.20-8的符号链接]
报错如下:

--------------------------------------
[root@jkh kernel]# gcc -o ceshi.o -DMODULE  -D__KERNEL__   -O -W -c first.c -I/usr/src/linux/include
In file included from /usr/src/linux/include/linux/kernel.h:15,
                 from first.c:2:
/usr/src/linux/include/asm/byteorder.h:14: warning: type qualifiers ignored on function return type
/usr/src/linux/include/asm/byteorder.h:28: warning: type qualifiers ignored on function return type
In file included from /usr/src/linux/include/linux/byteorder/little_endian.h:11,
                 from /usr/src/linux/include/asm/byteorder.h:45,
                 from /usr/src/linux/include/linux/kernel.h:15,
                 from first.c:2:
/usr/src/linux/include/linux/byteorder/swab.h:160: warning: type qualifiers ignored on function return type
/usr/src/linux/include/linux/byteorder/swab.h:173: warning: type qualifiers ignored on function return type
/usr/src/linux/include/linux/byteorder/swab.h:186: warning: type qualifiers ignored on function return type
/usr/src/linux/include/linux/byteorder/swab.h:200: warning: type qualifiers ignored on function return type
In file included from first.c:3:
/usr/src/linux/include/linux/malloc.h:4:2: #error linux/malloc.h is deprecated, use linux/slab.h instead.
In file included from /usr/src/linux/include/linux/sched.h:28,
                 from /usr/src/linux/include/linux/mm.h:22,
                 from /usr/src/linux/include/linux/slab.h:14,
                 from /usr/src/linux/include/linux/malloc.h:6,
                 from first.c:3:
/usr/src/linux/include/linux/signal.h: In function `sigorsets':
/usr/src/linux/include/linux/signal.h:108: warning: comparison of unsigned expression < 0 is always false
/usr/src/linux/include/linux/signal.h: In function `sigandsets':
/usr/src/linux/include/linux/signal.h:111: warning: comparison of unsigned expression < 0 is always false
/usr/src/linux/include/linux/signal.h: In function `signandsets':
/usr/src/linux/include/linux/signal.h:114: warning: comparison of unsigned expression < 0 is always false
/usr/src/linux/include/linux/signal.h: In function `signotset':
/usr/src/linux/include/linux/signal.h:140: warning: comparison of unsigned expression < 0 is always false
-------------------------------------------------------

这个是否是版本依靠问题?该如何解决?
 楼主| 发表于 2006-12-14 20:54:55 | 显示全部楼层
今天把redhat的内核由 2.4.20-8 升级到了 2.4.32 并在编译内核时取消了 版本依赖
include头文件时依旧报错如下:

-----------------------------------------------------------------------
[root@jkh kernel2]# gcc -c -O -W -o cc.o cc.c -I/usr/src/linux-2.4.32/include -DMODULE -D__KERNEL__
In file included from /usr/src/linux-2.4.32/include/linux/kernel.h:15,
                 from /usr/src/linux-2.4.32/include/asm/system.h:5,
                 from /usr/src/linux-2.4.32/include/linux/spinlock.h:6,
                 from /usr/src/linux-2.4.32/include/linux/module.h:12,
                 from cc.c:20:
/usr/src/linux-2.4.32/include/asm/byteorder.h:14: warning: type qualifiers ignored on function return type
/usr/src/linux-2.4.32/include/asm/byteorder.h:30: warning: type qualifiers ignored on function return type
In file included from /usr/src/linux-2.4.32/include/linux/byteorder/little_endian.h:11,
                 from /usr/src/linux-2.4.32/include/asm/byteorder.h:65,
                 from /usr/src/linux-2.4.32/include/linux/kernel.h:15,
                 from /usr/src/linux-2.4.32/include/asm/system.h:5,
                 from /usr/src/linux-2.4.32/include/linux/spinlock.h:6,
                 from /usr/src/linux-2.4.32/include/linux/module.h:12,
                 from cc.c:20:
/usr/src/linux-2.4.32/include/linux/byteorder/swab.h:160: warning: type qualifiers ignored on function return type
/usr/src/linux-2.4.32/include/linux/byteorder/swab.h:173: warning: type qualifiers ignored on function return type
/usr/src/linux-2.4.32/include/linux/byteorder/swab.h:186: warning: type qualifiers ignored on function return type
/usr/src/linux-2.4.32/include/linux/byteorder/swab.h:200: warning: type qualifiers ignored on function return type
----------------------------------------------------------------------

cc.c 的文件内容为:


------------------------------------------------------------------------
/*cc.c*/
#define __NO_VERSION__

#include<linux/module.h>
------------------------------------------------------------------------



我是菜鸟........刚学驱动书写,查了不少的资料,觉得不是版本依赖 引发的问题,是否是我的gcc版本不兼容(我的gcc是renhat自带安装上去的)?
但如果是 gcc 版本问题的话,为何在2.4.20-8内核下也存在问题?并且在2.4.20-8内核 include<linux/module.h>这句不会出问题,<linux/fs.h>才报错了.
(注:在2.4.20-8内核下我已经成功编译了hello.o)

还是其他问题??
实在想不出解决问题的思路.人门难,难于上青天~各位高手如能指点一二~不胜感激.

我的QQ:43966749
希望和各位有兴趣的朋友共同学习
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-14 20:57:24 | 显示全部楼层
今天把redhat的内核由 2.4.20-8 升级到了 2.4.32 并在编译内核时取消了 版本依赖
include头文件时依旧报错如下:

-----------------------------------------------------------------------
[root@jkh kernel2]# gcc -c -O -W -o cc.o cc.c -I/usr/src/linux-2.4.32/include -DMODULE -D__KERNEL__
In file included from /usr/src/linux-2.4.32/include/linux/kernel.h:15,
                 from /usr/src/linux-2.4.32/include/asm/system.h:5,
                 from /usr/src/linux-2.4.32/include/linux/spinlock.h:6,
                 from /usr/src/linux-2.4.32/include/linux/module.h:12,
                 from cc.c:20:
/usr/src/linux-2.4.32/include/asm/byteorder.h:14: warning: type qualifiers ignored on function return type
/usr/src/linux-2.4.32/include/asm/byteorder.h:30: warning: type qualifiers ignored on function return type
In file included from /usr/src/linux-2.4.32/include/linux/byteorder/little_endian.h:11,
                 from /usr/src/linux-2.4.32/include/asm/byteorder.h:65,
                 from /usr/src/linux-2.4.32/include/linux/kernel.h:15,
                 from /usr/src/linux-2.4.32/include/asm/system.h:5,
                 from /usr/src/linux-2.4.32/include/linux/spinlock.h:6,
                 from /usr/src/linux-2.4.32/include/linux/module.h:12,
                 from cc.c:20:
/usr/src/linux-2.4.32/include/linux/byteorder/swab.h:160: warning: type qualifiers ignored on function return type
/usr/src/linux-2.4.32/include/linux/byteorder/swab.h:173: warning: type qualifiers ignored on function return type
/usr/src/linux-2.4.32/include/linux/byteorder/swab.h:186: warning: type qualifiers ignored on function return type
/usr/src/linux-2.4.32/include/linux/byteorder/swab.h:200: warning: type qualifiers ignored on function return type
----------------------------------------------------------------------

cc.c 的文件内容为:


------------------------------------------------------------------------
/*cc.c*/
#define __NO_VERSION__

#include<linux/module.h>
------------------------------------------------------------------------



我是菜鸟........刚学驱动书写,查了不少的资料,觉得不是版本依赖 引发的问题,是否是我的gcc版本不兼容(我的gcc是renhat自带安装上去的)?
但如果是 gcc 版本问题的话,为何在2.4.20-8内核下也存在问题?并且在2.4.20-8内核 include<linux/module.h>这句不会出问题,<linux/fs.h>才报错了.
(注:在2.4.20-8内核下我已经成功编译了hello.o)

还是其他问题??
实在想不出解决问题的思路.人门难,难于上青天~各位高手如能指点一二~不胜感激.

我的QQ:43966749
希望和各位有兴趣的朋友共同学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表