问题

我的 COBOL 编译器中的链接编辑步骤究竟做了什么?

代码编译完成后,会执行一个链接编辑步骤。我不太确定这一步是做什么的。

背景信息

刚从学校毕业(3 年前),我得到了一份大型机应用程序开发人员的工作。在学校对大型机一无所知,我的知识有很多空白。在我的店里,我们有一种“黑匣子”的态度,我们不需要知道很多这些东西是如何工作的,它只是知道。如果程序已经成功编译,我试图理解为什么我们需要这个链接编辑步骤。

最佳答案

Linkedit/binderer 步骤从编译器(或汇编器)的输出中生成可执行程序。

如果您查看 COBOL 编译步骤中 SYSLIN 上的输出数据集(如果它是临时数据集,您可以将其覆盖为 FB、LRECL 80 顺序数据集以便能够查看它),您将看到“卡片图像",其中包含(除其他外)编译器生成的机器代码。

这些卡片图像不可执行。代码甚至不是连续的,并且缺少许多诸如必要的运行时模块之类的东西。

Program Binder/Binder (PGM=HEWL) 从编译器/汇编器中获取目标代码(卡片图像)并执行所有必要的操作(根据它安装的选项,您提供的更多选项,以及许多包含的其他库)对象代码或加载模块或程序对象)来创建可执行程序。

曾经有一个叫做链接编辑器的东西可以完成这个任务。因此,linkedit,linkedit。不幸的是,在英语中,bind 与 edit 的共轭方式不同。没有什么好词,所以我使用 Binderer 和 Bindered,部分是为了反对决定将其称为 Program Binder(也不要与 Binding for DB2 混淆)的机构。

所以,今天,Linkedit 人们的意思是“使用程序绑定(bind)器”。它是将编译/汇编的输出变成可执行程序的过程,它可以是加载模块,也可以是程序对象(企业 COBOL V5+ 只能绑定(bind)到程序对象,不能绑定(bind)到程序对象)或 DLL(不能绑定(bind)到程序对象)与 .dll 混淆)。

值得查看 SYSLIN 的输出、binder 步骤的 SYSPRINT 输出,并引用 Program Binder 的手册/演示文稿,这将使您了解进入的内容,发生的事情(查找任何 IEW 消息,特别是对于非-zero-RC 执行步骤)通过将消息粘贴在浏览器搜索框中。从纪录片 Material 中,您还将开始了解主题的广度。 Binder 能够做很多有用的事情。

这是一个有用图表的链接、一些更详细的解释以及应用程序绑定(bind)器的主要引用文档的名称:z/OS MVS 程序管理:用户指南和引用

The program management binder

最后,它们之所以是“卡片图像”,是因为……在过去,来自编译器/汇编器的对象组会被冲压到物理卡片上。然后将其用作链接编辑器的输入卡。我不后悔我错过了不得不这样做...

关于mainframe - 链接编辑步骤到底是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43098217/

10-13 08:36