0

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

4

1 回答 1

3

我真的不能专门针对 PE 说话,但我想这类似于 ELF 的情况,其中有两个不同的符号表可以说:

  • “普通”符号表(通常称为“符号表”)在最终可执行文件中是可选的。如果它存在,它会被调试器和其他检查带有符号信息的程序的程序使用。它通常由链接器生成,但可以并且经常被剥离以减小文件大小。
  • 动态符号表用于在运行时链接 DSO,因此需要为使用动态链接的可执行文件提供。但是,它只列出了可执行文件需要(或想要公开,这也是可能的)的外部符号;不是链接期间出现在其中的每个符号。
于 2015-05-16T05:47:45.617 回答