一、什么是符号?
每个可重定位目标模块m都有一个符号表,它包含m定义和应用的符号的消息。那么什么是符号呢?
简单来讲,符号氛围三种:
1、全局符号:没有用static修饰的函数和全局变量
2、局部符号:用了static修饰的函数和全局变量
3、外部符号:在模块A中定义,并被模块B引用的全局符号
二、符号定义和符号引用
以这两个程序为例,辨别哪些是符号的定义,哪些是符号的引用。
三、符号与符号表
符号表存放着程序中所有符号的信息,我们以swap程序为例,查看符号表中的信息
Type代表种类,FUNC函数,OBJECT对象,也有NOTYPE对应未定义类型
Ndx:COM代表未初始化的数据(.bss),UND表示未定义,1则是放入.text节,详细请看可重定位文件格式。
·Value代表在节中的偏移量
接着以上


发布评论