符号表如何将符号与其定义连接起来?

时间:2017-09-11 07:35:03

标签: c++

我知道它确实是实现定义的,但几乎总是一些常见的功能/方法。那么,当当前翻译单元中没有定义时,符号表通常如何将符号与其定义连接起来?

1 个答案:

答案 0 :(得分:0)

据我了解,这可以通过3种方式实现。

  1. 如果符号是本地符号,编译器将解析引用,并且没有其他操作。
  2. 如果符号是全局的并且位置相关,则符号将在链接编辑时解析(例如,.a或.lib库)。
  3. 如果符号是全局的并且位置相关,则链接编辑器在链接时再次解析符号。符号由偏移表引用,而不是直接解析。然后在运行时,链接加载器将解析偏移量(例如,.so或.dll库)。
  4. 参见' Linkers&装载机'莱文,如果你喜欢书籍参考。在线,Oracle的Linker and Libraries Guide是我读过的最好的。