未解决符号表,导出符号表和地址重定向表

Posted zzfx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未解决符号表,导出符号表和地址重定向表相关的知识,希望对你有一定的参考价值。

让我们总结一下:编译器把一个cpp编译为目标文件的时候,除了要在目标文件里写入cpp里包含的数据和代码,还要至少提供3个表:未解决符号表,导出符号表和地址重定向表。 
    未解决符号表提供了所有在该编译单元里引用但是定义并不在本编译单元里的符号及其出现的地址。 
    导出符号表提供了本编译单元具有定义,并且愿意提供给其他编译单元使用的符号及其地址。 
    地址重定向表提供了本编译单元所有对自身地址的引用的记录。 
    链接器进行链接的时候,首先决定各个目标文件在最终可执行文件里的位置。然后访问所有目标文件的地址重定向表,对其中记录的地址进行重定向(即加上该编译 单元实际在可执行文件里的起始地址)。然后遍历所有目标文件的未解决符号表,并且在所有的导出符号表里查找匹配的符号,并在未解决符号表中所记录的位置上 填写实际的地址(也要加上拥有该符号定义的编译单元实际在可执行文件里的起始地址)。最后把所有的目标文件的内容写在各自的位置上,再作一些别的工作,一 个可执行文件就出炉了。 

 

http://blog.csdn.net/yby4769250/article/details/7360483

以上是关于未解决符号表,导出符号表和地址重定向表的主要内容,如果未能解决你的问题,请参考以下文章

链接器的“两步链接”

浅谈编译过程和符号表重定位问题

1.2.1bat脚本命令 DIR 显示磁盘目录与重定向符号 通配符

shell脚本中的重定向符号

Linux文件描述符与重定向

Linux 第三天 重定负管道符环境变量