链接器和加载器

出版时间:2009-9  出版社:北京航空航天大学出版社  作者:John R.Levine  页数:184  译者:李勇  
Tag标签:无  

前言

  几乎从有计算机以来,链接器和加栽器就是软件开发工具包中的一部分,因为它们允许使用模块(而不是一个单独的大文件)来构建程序的关键工具。  早在1947年,程序员们就开始使用原始的加载器:将程序的例程存储在多个不同的磁带上,并将它们合并、重定位为一个程序。在20世纪60年代早期,这些加栽器就已经发展得相当完善了。由于那时内存很贵且容量有限,计算机的速度很慢(以今天的标准),为了创建复杂的内存覆盖策略(以将大容量的程序加载到小容量内存中),以及重新编辑先前链接过的文件(以节省重新创建程序的时间),这些链接器都包含了很多复杂的特性。  20世纪七八十年代,链接技术几乎没有什么进展。链接器趋向于更加简单,虚拟内存技术将应用程序和覆盖机制中的大多数存储管理工作都转移给了操作系统,越来越快的计算机和越来越大的磁盘也使得重新链接一个程序或替换个别模块比仅仅链接改变过的地方更加容易了。从20世纪90年代起,链接器又开始变得复杂起来,增加了诸多现代特性,包括对动态链接共享库的支持和对C++独特要求的支持。同时,像IA64那样具有宽指令字和编译时访存调度特性的先进处理器架构,也需要将一些新的特性加入到链接器中,以确保在被链接的程序中可以满足代码的这些复杂需求。

内容概要

本书讲述构建程序的关键工具——链接器和加载器,内容包括链接和加载、体系结构、目标文件、存储分配、符号管理、库、重定位、加载和覆盖、共享库、动态链接和加载、动态链接的共享库,以及着眼于成熟的现代链接器所做的一些变化;并介绍一个持续的实践项目,即使用Perl语言开发一个可用的小链接器。    本书适合高校计算机相关专业的学生、实习程序员、语言设计者和开发人员阅读参考。  作者简介:  莱文(John R.Levine)是很多书籍的作者或合作者,包括Lex & Yacc(O'Reilly),Programming for Graphics Files in C and C++(Wiley),以及7-heIntemetforDummies(IDG)。他还是Journal of C Language Translation的荣誉退休发行人、comp.compilers新闻组的长期仲裁人员,以及某个最早的商用Fortran 77编译器的创建考。他在耶鲁大学获得了计算机科学的博士学位。

书籍目录

第1章 链接和加载 1.1 链接器和加载器做什么? 1.2 地址绑定:从历史的角度 1.3 链接与加载 1.4 编译器驱动 1.5 链接:一个真实的例子 练习第2章 体系结构的问题 2.1 应用程序二进制接口 2.2  内存地址 2.3 地址构成 2.4 指令格式 2.5 过程调用和寻址能力 2.6 数据和指令引用 2.7 分页和虚拟内存 2.8 Intel 386分段 2.9 嵌入式体系结构 练习第3章  目标文件  3.1  目标文件中都有什么?  3.2 空目标文件格式:MS-DOS的COM文件  3.3 代码区段:UNIX的a.out文件  3.4 重定位:MS—DOS的EXE文件  3.5 符号和重定位  3.6 可重定位的a.out格式  3.7 UNIX的ELF格式  3.8 IBM 360目标格式  3.9 微软可移植、可执行体格式  3.10 Intel/Microsoft的OMF文件格式  3.11 不同目标格式的比较  练习  项目第4章 存储空间分配 4.1 段和地址 4.2 简单的存储布局 4.3 多种段类型 4.4 段与页面的对齐 4.5 公共块和其他特殊段 4.6 链接器控制脚本 4.7 实际中的存储分配 练习 项目第5章 符号管理 5.1 绑定和名字解析 5.2 符号表格式 5.3 名称修改 5.4 弱外部符号和其他类型符号 5.5 维护调试信息 练习 项目第6章  库 ……第7章 重定位第8章 加载和覆盖第9章 共享库第10章 动态链接和加载第11章 高级技术参考文献

章节摘录

  第1章 链接和加载  1.1 链接器和加载器做什么?  任何一个链接器和加载器的基本工作都非常简单:将更抽象的名字与更底层的名字绑定起来,好让程序员使用更抽象的名字编写代码。也就是说,它可以将程序员编写的一个诸如get  ine的名字绑定到“iosys模块内可执行代码的612字节处”,或者可以采用诸如“这个模块的静态数据开始的第450字节处”这样更抽象的数字地址,并将其绑定到数字地址上。  1.2 地址绑定:从历史的角度  链接器和加载器是做什么的?深入理解的方法就是看看它们在计算机编程系统的发展中充当了什么角色。  最早的计算机完全是用机器语言进行编程的。程序员需要在纸质表格上写下符号化的程序,然后手工将其汇编为机器码,通过开关、纸带或卡片将其输入到计算机中(真正的高手可以在开关上直接编码)。如果程序员使用符号化的地址,那他就得手工完成符号到地址的绑定。如果后来发现需要添加或删除一条指令,那么整个程序都必须手工检查一遍,并将所有被添加或删除指令影响的地址都进行修改。  这个问题就在于名字和地址绑定得过早了。汇编器通过让程序员使用符号化名字编写程序,然后由程序将名字绑定到机器地址的方法解决了这个问题。如果程序被改变了,那么程序员必须重新汇编它,但是地址分配的工作已经从程序员转给计算机了。

媒体关注与评论

  “我很享受阅读这本对实现链接器和加载器的众多技术和挑战进行有效概述的书。虽然书中的多数例子都集中在今天被广泛使用的三种计算机体系结构上,但这本书也包含了很多描述过去的一些有趣和古怪的计算机体系结构的注解。通过这些真实的战例,我断定作者本人真正经历了这些事情并存活了下来给我们讲述这个故事。”     ——Guy Steele

编辑推荐

  不管你的编程语言是什么,不管你的平台是什么,你很可能总是会涉及链接器和加载器的功能。但是你知道如何最大限度地利用它们吗?只有现在,随着《链接器和加载器》的出版,总算有一本深入完整地彻底揭示编译时和运行时过程的权威著作了。  《链接器和加载器》首先通过实例深入浅出地阐述了在不同的编译器和操作系统中链接和加载过程的差异。在这个基础上,作者提出了清晰实用的忠告,来帮助你创建更快、更清晰的代码。你将会学习如何规避和Windows DLL相关的陷阱,充分利用UNIX ELF库模式等。如果你对程序设计抱有非常认真的态度,那么你可以通过这本书充分地理解这个领域内最难懂的主题之一。《链接器和加载器》对于编译器和操作系统课程同样也是一本理想的补充读物。  《链接器和加载器》特性  ◆覆盖了Windows,UNIX,Linux,BeOS和其它操作系统的动态链接过程。  ◆解释了Java链接模式,以及它是如何应用在网络小应用程序和可扩展Java代码中的。  ◆帮助你编写更优雅、更高效的代码,以及构建能够被更加高效地编译、加裁和运行的应用程序。  ◆包含了一个用Perl构建链接器的练习项目,项目文件可以从网络下载得到。

图书封面

图书标签Tags

评论、评分、阅读与下载


    链接器和加载器 PDF格式下载


用户评论 (总计40条)

 
 

  •   链接加载入门书,内容很全面,总体还不错。
  •   好书,链接加载入门书之一。
  •   内容详尽充实,非常有助于理解程序的编译和加载!
  •   武林绝学,却缺少关注,程序是怎么来的?为什么要经过链接,为什么对每个模块的汇编中部分地址需要重定位?为什么?为什么?为什么这些都没有文档支持,读读本书吧,他能告诉你答案
  •   如果想深入理解程序怎么从代码到二进制文件,值得一读
  •   适合想深入了解程序结构构造的技术人员,书很薄但是内容很丰富
  •   需要较强的计算机基础才能看懂。计算机专人只应必修,尤其是系统底层开发人员。
  •   对中级和高级程序员来说,很有帮助
  •   经典书籍,如果对这方面有兴趣的话建议购买,的确写的不错~
  •   收藏了这本书很久了,发现当当搞活动,终于下单了,快递很快,第二天就到了。不错。
  •   非常喜欢这本书,很和我的口味啊
  •   学习了!
  •   好书 能学习到很多东西!~
  •   好书,读了之后有豁然开朗的感觉。
  •   提高内力。
  •   翻译得不错,是一本不错的书.
  •   好书,推荐一下,有希望了解底层东西的同志们值得一看
  •   冲这个唯一性也要买来读一读,收藏先
  •   总之不是给初学的人看的~
  •   书不错,是介绍链接加载器的不错的书籍,内容很全面,就是不够详细,总体来说还不错
  •   花了2个星期时间,已经看完前面6章。书不错,但写的太笼统,而且讲的太泛。比如说我只对ELF格式文件链接和加载有兴趣,但这本书基本老的新的,各种架构的都介绍,但每种又稍微点到为止。要深刻理解加载和链接过程,还是得另找资料才行。这本书可以看做一个原理性介绍,在看此书前先确保自己对内存管理和目标文件有些基本的认识。
  •   起码得学过编译原理再看,不然太累……
  •   详细讲解了link和load的过程,很好
  •   这本书不错,有点难度,正在阅读中
  •   这种读物比较少见,读一下,可以系统化自己的知识。
  •   粗略浏览了一下,很薄的一本书,但是要真正完全理解本书不容易。
  •   翻译的还不错,不过若是能够结合英文原版效果会更好
  •   帮同事购买的,同事说内容还可以
  •   货刚到,还没有读,送货速度比较快,书也比较干净。
  •   不错的入门
  •   原书是好书。翻译得还行。
  •   这本书 久闻其名,
    看完以后,稍觉名不副实,可能是图书市场上写关于库
    这个话题的书少之又少,凸显出这本书的地位。

    作者好像是个怀旧的人,对一些,我们这个年代
    业已淘汰的技术或产品念念不忘。本来就薄薄的一册,
    还在这些上过时的东西浪费笔墨,好在在书的末尾看
    到了一些精华的知识。

    实际上对于想了解这部分内容的技术人员来说,我推荐
    更好的一本书《链接 加载 与库》。
  •   对我来说内容有点难,还需要其它一些背景资料补充
  •   盼了一个多礼拜,终于收到货了,虽然时间长了些,但是在我的期待中终究是收到货了!真不容易呀!
  •   感觉这本书学不到什么东西
  •   讲到的基本上其它书上都讲了!并且比这个详细,不知道中国人写类似书的时候都把它涵盖进去了,还是.....你懂的!!

    再看看有没有什么特别的地方再说教吧!!
  •   内容和性价比不高 完全可以打印电子版看就成了
  •   书de 翻译有些乱。
  •   很好,好书一本
  •   学习用的啊
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7