Linkers & Loaders 翻译版:探索链接与加载的奥秘

5星 · 超过95%的资源 需积分: 11 11 下载量 147 浏览量 更新于2024-08-02 收藏 7.22MB PDF 举报
"linker&loader.pdf" 这本书深入探讨了链接器和加载器在计算机系统中的作用,它们是程序从源代码到可执行文件的关键环节。链接器负责将编译后的对象文件合并,并解决符号引用,而加载器则在程序运行时将它们加载到内存中并进行地址绑定。 第1章介绍了链接和加载的基本概念。连接器的主要任务是组合多个目标文件(包含了编译后的代码和数据),解决函数和变量的引用,消除未定义的外部符号。载入器则在程序启动时,将已链接的可执行文件映射到内存中,为程序的执行做好准备。这一章还通过一个真实的例子展示了连接过程。 第2章讨论了不同体系结构对链接和加载的影响,如应用二进制接口(ABI)和内存地址的处理。讲解了如何在不同的处理器架构(如SPARC和Intel 386)中处理指令格式、过程调用以及数据和指令的寻址方式。此外,还涉及了嵌入式系统的特殊考虑。 第3章详细介绍了目标文件的结构,包括空目标格式、代码区、重定位信息以及不同平台的目标文件格式,如Unix的a.out、MS-DOS的COM和EXE文件,以及IBM360和Intel/Microsoft的格式。这些格式包含符号和重定位信息,是链接器工作的基础。 第4章聚焦于存储空间的分配,解释了段和地址的概念,以及如何根据不同的段类型进行存储布局。讨论了段对齐、公共块的处理,以及连接器控制脚本在决定内存分配中的作用。对于嵌入式系统,存储分配有其特殊性,这一章也对此进行了阐述。 第5章介绍了符号管理,包括符号的绑定和解析过程,符号表的格式,以及名字调整(如名字修饰)的过程。还涵盖了弱外部符号和其他类型的符号,以及调试信息的维护。 第6章专门探讨了链接库的使用和实现。库文件格式的多样性,如静态库和动态库,以及创建和搜索库文件的方法被详细解释。此外,还讨论了性能问题,特别是弱外部符号对链接行为的影响。 第7章讲解了重定位,这是连接过程中至关重要的一步,包括硬件和软件的重定位方式,以及链接时和加载时的重定位。书中列举了基本的重定位技术,并提到了可重链接和重定位的输出格式。 这本书深入解析了链接器和加载器的工作原理,覆盖了从目标文件的构造到程序在内存中的布局和执行的整个过程,对于理解计算机系统的底层运作机制非常有价值。