最终可执行文件中符号表的要求?

时间:2015-05-16 05:43:01

标签: symbol-table

我读到windows便携式可执行格式包含一个符号表。我理解为什么在编译的语义分析阶段以及代码生成期间需要符号表。但我不明白为什么最终的可执行文件本身应该包含一个符号表,因为这个阶段的地址被映射到汇编代码中。我错过了什么?

1 个答案:

答案 0 :(得分:3)

我无法专门针对PE发言,但我想象它与ELF的情况类似,其中有两个不同的符号表可以说:

  • "普通"符号表(一个通常称为"符号表"),在最终的可执行文件中是可选的。如果它存在,调试器和其他程序使用它来检查具有符号信息的程序。它通常由链接器生成,但之后可以并且经常被剥离以减小文件大小。
  • 动态符号表用于在运行时链接DSO,因此需要存在使用动态链接的可执行文件。它只列出了可执行文件需要(或想要公开的外部符号,这也是可能的);并非在链接过程中出现在其中的每个符号。