URN Logo
UNIX Resources » Linux » China Linux Forum » C/C++编程版 » 33 » 关于/usr/src/linux/include/linux中的头文件的疑问
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
关于/usr/src/linux/include/linux中的头文件的疑问
 
 
 
 
 
 
 
 
Subject: 关于/usr/src/linux/include/linux中的头文件的疑问
Author: goodness4960    Posted: 2005-05-23 10:10    Length: 273 byte(s)
[Original] [Print] [Top]
在我的red hat 9.0(linux-2.4.20-8)系统中,目录/usr/src/linux/include/linux和目录usr/include/linux中都有许多头文件,并且头文件名都相同,但是对于文件里面的内容,有的头文件相同,有的却不一样。
我想请问一下,这两个目录下的头文件有什么关联吗?它们分别有什么用法的不同!
[Original] [Print] [Top]
Subject: Re: 关于/usr/src/linux/include/linux中的头文件的疑问
Author: Atu    Posted: 2005-05-23 14:54    Length: 414 byte(s)
[Original] [Print] [Top]
/usr/src/linux/include/linux是给编译内核用的
/usr/include/linux是给编译应用程序用的

如果你的/usr/src/linux/里的内核源码,与当前运行的内核一致
可以
ln -s /usr/src/linux/include/linux /usr/include/linux
ln -s /usr/src/linux/include/asm /usr/include/asm
以前的Linux一般也都是这样的。

但是在最新的发布中,似乎更推荐两者分开。
[Original] [Print] [Top]
Subject: Re: 关于/usr/src/linux/include/linux中的头文件的疑问
Author: goodness4960    Posted: 2005-05-24 09:36    Length: 444 byte(s)
[Original] [Print] [Top]
如果说/usr/src/linux/include/linux是给编译内核用的; 而/usr/include/linux是给编译应用程序用的 ,那是不是也可以说,我在基于内核进行编程(模块编程)时,在编译程序时,是不是用/usr/src/linux/include/linux的头文件,如:gcc -O -c -I/usr/src/linux/include examplemod.c ;但是基于用户空间编程(比如libipq)时,在编译程序是不是用/usr/include/linux的头文件,如:gcc -O -c -I/usr/include examplespace.c ;




[Original] [Print] [Top]
Subject: Re: 关于/usr/src/linux/include/linux中的头文件的疑问
Author: Atu    Posted: 2005-05-24 09:49    Length: 597 byte(s)
[Original] [Print] [Top]
究竟该用哪个,是看你要编译的东西,是否依赖内核版本。
如果不依赖,用哪个都无所谓。

否则,就要看你编译的东西,希望它运行于何种内核:是当前运行的内核,还是源码目录(一般是/usr/src/linux)中的内核
然后,根据情况选择该使用何种头文件。

即使你是在编译Kernel 模块,如果希望它运行于当前运行的Kernel,那还是应该使用/usr/include/linux;
否则,如果你希望你编译的Kernel 模块与源码目录中编译出来的Kernel一起发布,就应该使用 /usr/src/linux/include/linux。

----以上是我的理解,仅供参考,如果有说的不准确的地方,欢迎讨论。
[Original] [Print] [Top]
Subject: Re: 关于/usr/src/linux/include/linux中的头文件的疑问
Author: goodness4960    Posted: 2005-05-24 10:09    Length: 1,788 byte(s)
[Original] [Print] [Top]
如果说/usr/src/linux/include/linux是给编译内核用的; 而/usr/include/linux是给编译应用程序用的 ,那是不是也可以说,我在基于内核进行编程(模块编程)时,在编译程序时,是不是用/usr/src/linux/include/linux的头文件,如:gcc -O -c -I/usr/src/linux/include examplemod.c ;但是基于用户空间编程(比如libipq)时,在编译程序是不是用/usr/include/linux的头文件,如:gcc -O -c -I/usr/include examplespace.c ;

我在redhat9.0(linux-2.4.20-8)环境下编译了一个和netfilter相关的内核程序程序,当我用gcc -O -c -I/usr/src/linux/include examplemod.c编译时,就没有问题,但我用gcc -O -c -I/usr/include examplemod.c编译时就不能通过,出现如下的错物欲告警:
/usr/include/linux/netfilter_ipv4.h:53: `INT_MIN' undeclared here (not in a function)
/usr/include/linux/netfilter_ipv4.h:53: enumerator value for `NF_IP_PRI_FIRST' not integer constant
/usr/include/linux/netfilter_ipv4.h:59: `INT_MAX' undeclared here (not in a function)
/usr/include/linux/netfilter_ipv4.h:59: enumerator value for `NF_IP_PRI_LAST' not integer constant
test1.c:21: warning: `struct net_device' declared inside parameter list
test1.c:21: warning: its scope is only this definition or declaration, which is probably not what you want
test1.c:21: warning: `struct sk_buff' declared inside parameter list
test1.c: In function `init_module':
test1.c:37: invalid use of undefined type `struct nf_hook_ops'
test1.c:38: invalid use of undefined type `struct nf_hook_ops'
test1.c:39: invalid use of undefined type `struct nf_hook_ops'
test1.c:40: invalid use of undefined type `struct nf_hook_ops'
/usr/include/linux/byteorder/swab.h: At top level:
test1.c:14: storage size of `nfho' isn't known
[Original] [Print] [Top]
Subject: Re: 关于/usr/src/linux/include/linux中的头文件的疑问
Author: goodness4960    Posted: 2005-05-24 10:09    Length: 1,379 byte(s)
[Original] [Print] [Top]

我在redhat9.0(linux-2.4.20-8)环境下编译了一个和netfilter相关的内核程序,当我用gcc -O -c -I/usr/src/linux/include examplemod.c编译时,就没有问题,但我用gcc -O -c -I/usr/include examplemod.c编译时就不能通过,出现如下的错误告警:
/usr/include/linux/netfilter_ipv4.h:53: `INT_MIN' undeclared here (not in a function)
/usr/include/linux/netfilter_ipv4.h:53: enumerator value for `NF_IP_PRI_FIRST' not integer constant
/usr/include/linux/netfilter_ipv4.h:59: `INT_MAX' undeclared here (not in a function)
/usr/include/linux/netfilter_ipv4.h:59: enumerator value for `NF_IP_PRI_LAST' not integer constant
test1.c:21: warning: `struct net_device' declared inside parameter list
test1.c:21: warning: its scope is only this definition or declaration, which is probably not what you want
test1.c:21: warning: `struct sk_buff' declared inside parameter list
test1.c: In function `init_module':
test1.c:37: invalid use of undefined type `struct nf_hook_ops'
test1.c:38: invalid use of undefined type `struct nf_hook_ops'
test1.c:39: invalid use of undefined type `struct nf_hook_ops'
test1.c:40: invalid use of undefined type `struct nf_hook_ops'
/usr/include/linux/byteorder/swab.h: At top level:
test1.c:14: storage size of `nfho' isn't known
[Original] [Print] [Top]
Subject: Re: 关于/usr/src/linux/include/linux中的头文件的疑问
Author: Atu    Posted: 2005-05-24 10:37    Length: 1,094 byte(s)
[Original] [Print] [Top]
是否是你的/usr/include/linux目录下面的头文件有错误?
这些文件都是在glibc-kernelheaders-x.x.x.rpm里面安装的
你可以检查它是否完整。
rpm -V glibc-kernelheaders

我使用的是2.6.9的Kernel
INT_MIN和INT_MAX定义在/usr/include/linux/kernel.h

#define INT_MAX ((int)(~0U>>1))
#define INT_MIN (-INT_MAX - 1)
#define UINT_MAX (~0U)
#define LONG_MAX ((long)(~0UL>>1))
#define LONG_MIN (-LONG_MAX - 1)
#define ULONG_MAX (~0UL)


类型struct nf_hook_ops声明在/usr/include/linux/netfilter.h

struct nf_hook_ops
{
struct list_head list;

/* User fills in from here down. */
nf_hookfn *hook;
struct module *owner;
int pf;
int hooknum;
/* Hooks are ordered in ascending priority. */
int priority;
};


[Original] [Print] [Top]
Subject: Re: 关于/usr/src/linux/include/linux中的头文件的疑问
Author: nxin    Posted: 2005-05-24 13:55    Length: 178 byte(s)
[Original] [Print] [Top]
redhat的/usr/include属于glibc,不是给内核用的,虽然也包含asm和linux目录,但是简化过的,编译内核模块偶尔能成功,幸运而已,我建议编译内核时加-nostdinc参数,以防止使用了错误的目录。
[Original] [Print] [Top]
« Previous thread
pthread如何报错??
C/C++编程版
33
Next thread »
请教:程序运行一次占用8k内存,但没有查到内存泄漏。
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 03:52:56, cost 0.047789096832275 ms.