章节总结
本章首先介绍了以下内容:
1- 目标文件再被链接成可执行文件时,输入目标文件的各个段是如何合并到输出文件中,链接器又如何为他们在输出文件中确定空间、地址。
2- 一旦输入段的地址被最终确定,接下来进行符号解析、重定位。链接器对各目标文件中引用的符号进行解析,对需要重定位的指令、数据进行修补,使他们指向正确位置。
4.1- 空间和地址分配(重点阅读)
P101两步链接:
1- 扫描所有输入目标文件,获取各段长度、属性信息。
2- 符号解析和重定位。
4.2- 符号解析与重定位(重点阅读)
如果main.c引用test.c的变量、函数,在main.o中对于引用的变量、函数只是赋个临时值。
等所有文件的符号解析完成后,对需要重定位的变量、函数地址进行修正。
4.3- COMMON块
4.4- C++相关问题
4.5- 静态库链接(重点阅读)
linux提供的动态、静态c库路径:/usr/lib/libc.a 、/usr/lib/libc.so
4.6- 链接过程控制(重点阅读)
以最小程序为例,讲解如何将c文件链接成可执行文件。
重点介绍使用链接脚本,控制链接过程。
4.7- BFD库