免费注册 查看新帖 |

Chinaunix

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

请教:内核里EXPORT_SYMBOL 宏是什么作用。 [复制链接]

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-16 15:31 |只看该作者 |倒序浏览
如题,找不着定义。先谢谢大家!

论坛徽章:
0
2 [报告]
发表于 2005-12-16 15:32 |只看该作者
导出符号给module用

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
3 [报告]
发表于 2005-12-16 15:49 |只看该作者
原帖由 albcamus 于 2005-12-16 15:32 发表
导出符号给module用


谢谢 albcamus ,有没有更详细一点的线索。

顺便问一下,那个头像是哪一位的?很帅!
我还是觉得以前那个半身像更有味道。

论坛徽章:
0
4 [报告]
发表于 2005-12-16 15:58 |只看该作者
晕,回复错地方了,转过来:


是给module用,而不是给用户程序用。
在用户态编译程序,当ld程序最终链接你的hello.o成为a.out时,要resolve all the requested symbols,如果你要链接的库没有导出你需要的所有symbols,那就链接不成功。

module是内核的,但道理一样 ──这里根据思一克兄的意见修正如下: module在编译时并不解析symbols的地址,而是加载时解析symbol,这是与用户态程序之编译的一点区别。

[ 本帖最后由 albcamus 于 2005-12-19 10:59 编辑 ]

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
5 [报告]
发表于 2005-12-16 16:34 |只看该作者
原帖由 albcamus 于 2005-12-16 15:58 发表
晕,回复错地方了,转过来:


是给module用,而不是给用户程序用。
在用户态编译程序,当ld程序最终链接你的hello.o成为a.out时,要resolve all the requested symbols,如果你要链接的库没有导出你需要的所 ...


还是不甚明白,回去看linux设备驱动! 谢谢啦。

论坛徽章:
0
6 [报告]
发表于 2005-12-17 11:50 |只看该作者
同shell中export的道理差不多,就是把一个模块中的函数对外公开,其他模块都可以调用。否则不能调用这个函数

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
7 [报告]
发表于 2005-12-19 09:26 |只看该作者
谢谢大家,有些明白了。

A module runs in the so-called kernel space.
因为模块运行在内核空间,不能直接调用应用程序库,只能调用内核函数。
EXPORT_SYMBOL宏的作用就是把内核函数的符号导出。符号的意思就是函数的
入口地址。

但是为什么不用include 把内核里的.h文件包含进来呢?
是因为模块代码的编译独立于内核源码吗?  
大家帮我看看理解的对不?

论坛徽章:
0
8 [报告]
发表于 2005-12-19 09:36 |只看该作者
楼主对C的libray的理解有偏差。

一个库,最主要两部分:1,库文件本身,如XXX.so、XXX.a等,用来链接;2, 头文件,用来编译时检查原型,以及一些常量定义、宏定义等。

对于内核来说,module并不链接到映像文件,但是要#include相关的头文件,就是为了利用宏和常量,以及内核导出的函数原型

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
9 [报告]
发表于 2005-12-19 10:06 |只看该作者
原帖由 albcamus 于 2005-12-19 09:36 发表
楼主对C的libray的理解有偏差。

一个库,最主要两部分:1,库文件本身,如XXX.so、XXX.a等,用来链接;2, 头文件,用来编译时检查原型,以及一些常量定义、宏定义等。

对于内核来说,module并不链接到映像文 ...

受教了。

我发现自己有一个前提条件没弄清楚:
要写一个模块的话,系统里必须要有一份内核源码,是吗?因为没有源码,就没法include那些函数原型了。
或者说模块本来就是内核源码的一部分?

论坛徽章:
0
10 [报告]
发表于 2005-12-19 10:11 |只看该作者
这些问题,应当写一个小模块试试,就都知道了。
可以参考我的精华贴《写给linux内核新手》,里面有个hello world小模块
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP