4.8 本章小结
本章我们首先介绍了静态链接中的第一个步骤,即目标文件在被链接成最终可执行文件时,输入目标文件中的各个段是如何被合并到输出文件中的,链接器如何为它们分配在输出文件中的空间和地址。一旦输入段的最终地址被确定,接下来就可以进行符号的解析与重定位,链接器会把各个输入目标文件中对于外部符号的引用进行解析,把每个段中须重定位的指令和数据进行"修补",使它们都指向正确的位置。
在本章里,我们还对几个静态链接中的问题进行了分析,比如为什么未初始化的全局/静态变量要使用COMMON块、C++会对链接器和目标文件有什么样的要求、如何使用脚本控制链接过程使得输出的可执行文件能够满足某些特殊的需求,比如不使用默认C语言运行库的程序、运行于嵌入式系统的程序,甚至是操作系统内核、驱动程序,等等。
在本章里,我们还对几个静态链接中的问题进行了分析,比如为什么未初始化的全局/静态变量要使用COMMON块、C++会对链接器和目标文件有什么样的要求、如何使用脚本控制链接过程使得输出的可执行文件能够满足某些特殊的需求,比如不使用默认C语言运行库的程序、运行于嵌入式系统的程序,甚至是操作系统内核、驱动程序,等等。