对于32位的 Intel x86系列处理器来说,重定位表的结构也很简单,它是一个El32 Rel 结构的数组,每个数组元素对应一个重定位入口。...链接器就会发现 shared和swap两个符号没有被定义,没有办法完成链接工作:
这也是我们平时在编写程序的时候最常碰到的问题之一,就是链接时符号未定义。...通过前面指令重定位的介绍,我们可以更加深层次地理解为什么缺少符号的定义会导致链接错误。其实重定位过程也伴随着符号的解析过程,每个目标文件都可能定义一些符号也可能引用到定义在其他目标文件的符号。...重定位的过程中,每个重定位的入口都是对一个符号的引用,那么当链接器须要对某个符号的引用进行重定位时,它就要确定这个符号的目标地址。...所以在链接器扫描完所有的输入目标文件之后,所有这些未定义的符号都应该能够在全局符号表中找到,否则链接器就报符号未定义错误。