链接
链接
定义:将各种代码和数据部分收集起来组成一个单一文件的过程。
发生时期:编译时,加载时,运行时。
静态链接:可重定位的目标文件->完全链接的可执行文件
- 主要任务:
符号解析:符号引用和符号定义一一对应
重定位:符号定义与存储器位置一一定义 - 可重定位的目标文件:
ELF头
.txt
.rodata
.data
.bss
.systab
...
节头部表 - 符号:
全局符号
外部符号
本地符号 - 符号表
Name Value Size Type Bind Ot Ndx Name - 符号解析:
符号引用与符号表的定义联系起来。 - 解析多重定义的全局符号
强符号:函数和已初始化的全局符号。
弱符号:未初始化的全局符号。
规则:
1.不允许有多个强符号。
2.有一个强符号和多个弱符号,选择强符号。
3.有多个弱符号,任意选择一个。