7.8 本章小结
本章我们首先分析了使用动态链接技术的原因,即使用动态链接可以更加有效地利用内存和磁盘资源,可以更加方便地维护升级程序,可以让程序的重用变得更加可行和有效。接着我们介绍了动态链接的基本例子,分析了动态链接中装载地址不确定时如何解决绝对地址引用的问题。
装载时重定位和地址无关代码是解决绝对地址引用问题的两个方法,装载时重定位的缺点是无法共享代码段,但是它的运行速度较快;而地址无关代码的缺点是运行速度稍慢,但它可以实现代码段在各个进程之间的共享。我们还介绍了ELF的延迟绑定PLT技术。
接着我们介绍了ELF文件中的".interp"、".dyanmic"、动态符号表、重定位表等结构,它们是实现ELF动态链接的关键结构。我们还分析了动态链接器如何实现自举、装载共享对象、实现重定位和初始化过程,实现动态链接。最后我们还介绍了显式动态链接的概念,并且举例展示了如何使用显式运行时链接编写一个程序运行ELF共享库中的函数。