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