符号表在这里有两种常见且相关的含义。
首先,目标文件中有符号表。 通常,C 或 C++ 编译器将单个源文件编译为扩展名为 .obj 或 .o 的目标文件。 这包含链接器可以处理到工作应用程序或共享库中的可执行代码和数据的集合。 目标文件中有一个称为符号表的数据结构,它将目标文件中的不同项目映射到链接器可以理解的名称。 如果从代码中调用函数,编译器不会将例程的最终地址放入目标文件中。 相反,它在代码中放入一个占位符值并添加一个注释,告诉链接器从它正在处理的所有目标文件中查找各种符号表中的引用,并将最终位置粘贴在那里。
其次,共享库或 DLL 中还有符号表。 这是由链接器生成的,用于命名库用户可见的所有函数和数据项。 这允许系统进行运行时链接,将这些名称的打开引用解析到库在内存中加载的位置。
符号表在编译过程中起着至关重要的作用,它存在于目标文件和共享库中。对于目标文件,符号表记录了函数和数据项的引用,链接器依据此进行定位。而在共享库中,符号表允许运行时链接,方便系统找到库中函数和数据的确切位置。
1817

被折叠的 条评论
为什么被折叠?



