返回信息流我们写驱动时常有
#include <linux/kernel.h>
#include <linux/module.h>
求问这个linux文件夹是指我们自己内核中的么?
还是交叉编译器里的啊?
完整的路径应该是什么呢?
此外我在交叉编译器的那些.h文件中,看到不少函数都只是有个申明,
那调用的时候执行的代码是到内核中找么?
是宿主机的内核还是目标板的内核呢?
谢谢啦~~~
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #11555同步于 2011/12/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
关于include文件
ghy
2011/12/1镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
你提到的东西都在交叉编译器里。
引用这里的头文件不会用到函数体,除非你编内核模块,用到的都是些变量定义而已。
【 在 ghy (伤逝) 的大作中提到: 】
: 我们写驱动时常有
: #include <linux/kernel.h>
: #include <linux/module.h>
: ...................
【 在 lanphon 的大作中提到: 】
: 头文件只有函数声明,实现都是在另外的文件中的,典型的是.a的静态链接库或者.so的动态链接库
: --
自己试一试就知道怎么回事了。
头文件,也就是.h文件,只提供函数原型的声明,而不会涉及到实现,这是编程的一个习惯。
函数的具体实现使用一个.c文件,编译为.a的静态链接库,或者.so的动态链接库,提供给使用者。
这样做的原因有二:1,保密要求,有些函数的算法可能是不希望别人看到的,编译成.a或者.so的
二进制文件,就可以达到保密的目的;2,方便升级,特别是.so动态链接库文件,只需要替换原有
的.so文件,就可以完成升级了。
附件中有个两个很简单的静态链接和动态链接的例子实现,可以参考一下,win平台的。
赞详细,不过人家说的是kernel的头文件,所以只能有两种作用,一种是为了使用内核的数
据结构,比如使用ioctl命令向内核传递命令,就必须使用内核的数据结构,或者比如inpu
t驱动从里面向外读取数据,也需要知道内核的数据结构.
另外一种,如果要使用内核的函数,那么必须要内核中export_symbol,然后在系统启动后
可以动态使用内核的符号,应该只是符号引用,而没有链接到函数体.【 在 lanphon (上善若水) 的大作中提到: 】
: 自己试一试就知道怎么回事了。
: 头文件,也就是.h文件,只提供函数原型的声明,而不会涉及到实现,这是编程的一个习惯。
: 函数的具体实现使用一个.c文件,编译为.a的静态链接库,或者.so的动态链接库,提供给使用者。
: ...................
【 在 ArmStrong 的大作中提到: 】
:
: 赞详细,不过人家说的是kernel的头文件,所以只能有两种作用,一种是为了使用内核的数
: 据结构,比如使用ioctl命令向内核传递命令,就必须使用内核的数据结构,或者比如inpu
: ...................
我以为kernel和普通的都一样。。。
[ema1]
【 在 lanphon 的大作中提到: 】
: 我以为kernel和普通的都一样。。。
: [ema1]
受教啦~~~
不过怎么看不见附件。。。
难道是我用的是旧版论坛原因。。