链接器最初是如何以及为何被开发为独立于编译器的工具?
基本上,我只是对历史感到好奇。
第一个链接器是什么时候编写的?当时的理由是什么?例如,多语言开发是一个问题吗?它的目标平台是什么?支持哪些语言和编译器?他们经历了哪些有趣的发展阶段?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
基本上,我只是对历史感到好奇。
第一个链接器是什么时候编写的?当时的理由是什么?例如,多语言开发是一个问题吗?它的目标平台是什么?支持哪些语言和编译器?他们经历了哪些有趣的发展阶段?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
根据 链接器和加载器 作者:John Levine 这个概念至少在 1947 年就已经出现了,到 20 世纪 60 年代现代链接编辑器有了重大发展。它们用于允许重用由需要它们的各种程序单独开发的模块库。我建议阅读文本(上面链接自 Google 图书搜索)以获取更多信息。
According to Linkers and Loaders by John Levine the concept, at least, was around in 1947, with significant development of the modern linkage editor by the 1960s. They are used to allow the reuse of libraries of modules developed separately by various programs that need them. I suggest reading the text (linked above from Google book search) for more information.
毫无疑问,这里有一两个人比我年长,但我知道当我在 70 年代末第一次开始编码时,编译语言(特别是汇编语言)几十年来就已经拥有单独的链接器了。您需要类似链接器的东西来处理单独编译的源文件,即使在汇编程序中也是如此。
进一步回顾,当您第一次开始使用可重定位符号地址进行系统调用时,您将开始需要符号链接器,而不仅仅是捕获到某个众所周知的位置。
Doubtless there is a person or two here older than me, but I know when I first started coding back in the late 70's, compiled languages (particularly assembers) already had separate linkers for decades. You need something like a linker in order to deal with separately-compiled source files, even in assembler.
Looking back further, you would start needing a symbolic linker the first time you started using relocatable symbolic addresses for system calls, rather than just trapping to some well-known location.
链接器之所以是单独的程序,是因为过去的 RAM 内存非常低,需要将编译器和链接器分开。我见过一个非常古老的 Fortran 编译器,它可以在 16 KB RAM 上运行,但必须运行数十次不同的过程。链接只是其中的一小部分。
The reasons why linkers were separate programs is that in the past RAM memory was pretty low and there was a need to split compiler and linker. I have seen a very old fortran compiler that worked on 16 KB of RAM but had to run through dozends of different passes. Linking was just a few of them.