1、什么是符号表?
2、何为符号解析和符号重定位?
在链接中,将函数和变量统称为符号。函数名或变量名称为符号名。
链接过程中很关键的一部分就是符号的管理,每一个目标文件都会有一个相应的符号表,这个表里记录了目标文件中所用到的所有符号。
每一个定义的符号有一个对应的值,叫做符号值。对于函数和变量来说,符号值就是它们的地址。
符号表中所有的分类:
1.定义在本目标文件的全局符号,可以被其他目标文件引用。
2.在本目标文件中引用的全局符号,却没有定义在本目标文件,这一般叫做外部符号。这里就是引用外部符号。
3.段名,这种符号由编译器产生,它的值就是其段的起始地址。如目标文件里的.text、.data 段。
4.局部符号,只在编译单元内部可见。局部符号对于链接过程是没有作用的。
5.行号信息,即目标文件指令与源代码中代码行的对应关系。
对于链接过程来说,只关注全局符号的相互“粘合”,其它的符号都是次要
符号值(st_value)的几种情况:
1.在目标文件中,如果是符号的定义并且该符号不是在COMMON块类型的,则st_value表示该符号在段中的偏移。
2.在目标文件中,如果符号时COMMON块类型的,则st_value表示该符号的对齐属性。
3.在可执行文
如果觉得《什么是符号表 符号解析 符号重定位?》对你有帮助,请点赞、收藏,并留下你的观点哦!