Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10724370
  • 博文数量: 2905
  • 博客积分: 20098
  • 博客等级: 上将
  • 技术积分: 36298
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-23 05:00
文章存档

2012年(1)

2011年(3)

2009年(2901)

分类: LINUX

2009-03-23 11:04:19

在linux系统中有内核空间 和 用户空间
所以就有两套C库,一套对应内核程序,一套对应用户空间的应用程序
内核的头文件一般放在/usr/src/linux2.4/include/
用户空间的头文件一般放在/usr/include/
               
因为两种头文件共存,所以有时在用户空间编译的内核程序由于使用的是内核空间的C库
到内核运行时就会有些问题
比如说编译模块程序,由于两个库的版本不一致
编译出来的内核模块加载内核后,会有version不匹配的问题
gcc编译时会自动从/usr/include/下搜索相关头文件,也就是用户的应用程序
但是如果在用户空间编译内核程序的话(LKM 模块),通常要指定
gcc -I/usr/src/linux2.4/include/等参数来使
其使用内核的C库
还有就是头文件虽然多,但是可以通过find命令查找,比如在/usr目录下找unistd.h这个头文件
可以这样
find /usr -name unistd.h -print
有大量头文件的名字是相同的但是内容不同,是链接或者引用

阅读(937) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~