开始,等到空间分配完成之后,各个函数才回确定自己在虚拟地址空间中的位置;
我们可以很清楚地看见“a.o”的反汇编结果中,“a.o”共定义了函数main,这个函数占用了0x33个字节,共17条指令;最左边的那列是每条指令的偏移量...对于每个要被重定位的ELF段都有一个对应的重定位表,而一个重定位表往往就是ELF文件中的一个段,所以其实重定位表也可以叫重定位段,我们在这里统一称作重定位表。...重定位入口的偏移(Oset)表示该入口在要被重定位的段中的位置,“ RELOCATION RECORDS FOR txt”表示这个重定位表是代码段的重定位表,所以偏移表示代码段中须要被调整的位置。...比如我们查看“a.o”的符号表:
GLOBAL”类型的符号,除了“main”函数是定义在代码段之外,其他两个“ shared和“swap”都是“UND”,即“ undefined”未定义类型,这种未定义的符号都是因为该目标文件中有关于它们的重定位项...所以在链接器扫描完所有的输入目标文件之后,所有这些未定义的符号都应该能够在全局符号表中找到,否则链接器就报符号未定义错误。