静态链接如何把多个目标文件组织成可执行文件,并处理符号与地址重定位
简答题中等372 次浏览
参考答案与解析
# 核心结论
静态链接不是把多个文件简单首尾拼接,而是由链接器读取可重定位目标文件和静态库,合并相同用途的节,解析符号引用,规划代码与数据的最终地址,并依据重定位记录修正指令或数据中的地址,最终生成可由操作系统装载的可执行文件。高级语言到机器码通常已在预处理、编译和汇编阶段完成;链接阶段关注的是多个编译单元之间的组合与地址确定。
# 底层机制
以常见的ELF目标格式为例,目标文件可能包含机器指令所在的.text、已初始化数据所在的.data、只读数据、描述零初始化存储的.bss、符号表和重定位表。编译某个源文件时,编译器通常不知道外部函数、全局变量以及最终节布局的地址,因此会在相关位置写入占位值,同时生
