免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4309 | 回复: 11
打印 上一主题 下一主题

请教下如何利用内核源码里面的头文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-12 16:59 |只看该作者 |倒序浏览
想让内核在运行时将自己的一些信息输出出来,比如进程信息,中断信息等等。自己写了代码,代码中需要include一些内核源码中的.h文件,但是编译时却说找不到头文件,我已经将头文件所在的路径用-I指定了,但是还是说找不到。不知道是怎么回事。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2008-12-12 17:06 |只看该作者
原帖由 alucard_yk 于 2008-12-12 16:59 发表
想让内核在运行时将自己的一些信息输出出来,比如进程信息,中断信息等等。自己写了代码,代码中需要include一些内核源码中的.h文件,但是编译时却说找不到头文件,我已经将头文件所在的路径用-I指定了,但是还 ...


你这样说大家只能猜你的原因。先把报错信息贴出来。

论坛徽章:
0
3 [报告]
发表于 2008-12-12 17:17 |只看该作者
原帖由 Godbach 于 2008-12-12 17:06 发表


你这样说大家只能猜你的原因。先把报错信息贴出来。

找到原因了,我虽然把路径指过去了,但是找到那个头文件以后如果那个头文件里面再include其它的头文件的话就又会报同样的错误,因为一般包含头文件采取的都是相对路径的方法。如果再手动改那些路径的话可以暂时解决当前文件的问题,但是如果再有头文件的包含的话总不能一级一级改下去吧?内核文件的结构那么复杂,改到哪年哪月啊?我就是想请教下各位大侠遇到这种问题一般都是怎么解决的?有什么简单的方法吗?相信这应该是个比较典型的问题啊

论坛徽章:
0
4 [报告]
发表于 2008-12-12 17:21 |只看该作者
我遇到过一个也是找不到头文件的问题:
错误说找不到config.h文件,去、/usr/src/.../include/linux/ 目录下,确实没有这个文件,请问是社么原因没有这个文件呢?怎么才能生成这个文件?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
5 [报告]
发表于 2008-12-12 17:51 |只看该作者
原帖由 chenbdchenbd 于 2008-12-12 17:21 发表
我遇到过一个也是找不到头文件的问题:
错误说找不到config.h文件,去、/usr/src/.../include/linux/ 目录下,确实没有这个文件,请问是社么原因没有这个文件呢?怎么才能生成这个文件?


这个文件估计在你程序里没有太大用处,你可以不用include他,试试。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
6 [报告]
发表于 2008-12-12 17:52 |只看该作者
原帖由 alucard_yk 于 2008-12-12 17:17 发表

找到原因了,我虽然把路径指过去了,但是找到那个头文件以后如果那个头文件里面再include其它的头文件的话就又会报同样的错误,因为一般包含头文件采取的都是相对路径的方法。如果再手动改那些路径的话可以暂 ...


include的话,应该是指向内核源码目录下的include目录。要不你吧你的Makefile贴出来吧。

论坛徽章:
0
7 [报告]
发表于 2008-12-12 18:48 |只看该作者
默认<>里面的头文件都是到/usr/include下面去搜索的,如果是内核目录里的文件就应该“”啦,问题就是“”里面的路径难搞定啊

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
8 [报告]
发表于 2008-12-12 20:43 |只看该作者
原帖由 alucard_yk 于 2008-12-12 18:48 发表
默认里面的头文件都是到/usr/include下面去搜索的,如果是内核目录里的文件就应该“”啦,问题就是“”里面的路径难搞定啊


模块编译的话,include的很多文件都在include/linux下。

论坛徽章:
0
9 [报告]
发表于 2008-12-12 21:53 |只看该作者
安装kernel header包即可。 一般发行版的iso里头都有这个包, 举例子你的应用程序#include <linux/netlink.h>,就会找到/usr/include/linux/netlink.h

不想安装kernel-headers包,或者发行版带的包太老,可以在编译内核时执行:

# make headers_install

当然,有些头文件只能在内核层include。

论坛徽章:
0
10 [报告]
发表于 2008-12-15 10:07 |只看该作者

回复 #4 chenbdchenbd 的帖子

config.h一般是./configure 时生成的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP