BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #11555同步于 2011/12/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

关于include文件

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