首页 > 解决方案 > 将 COBOL 编译为 Windows 的 32 位可执行文件

问题描述

我正在潜入 COBOL 的世界,并编写了一个简单的程序,该程序使用 open-cobol (cobc) 从我的 KDE Plasma 命令行按预期编译和运行。我看到一些网站提到 COBOL 非常便携,不需要多次编译,但是当我尝试在 Windows 10(即 32 位)上运行相同的输出程序时,系统指出该程序是 16 位应用程序,因此无法运行。

是否有可以与 cobc 一起使用的参数以使我的程序可以在 Windows 10 上运行的方式进行编译,还是我从根本上误解了这种语言的可移植性?

编译命令:cobc -x -o program program.cob

标签: windowscompilationcobol16-bit

解决方案


您的程序可能已经是 64 位可执行文件(取决于您的实际操作系统,否则为 32 位),但它绝对不是 Windows 二进制文件(并且因为 Windows 无法识别它,它只是猜测这是一个 16 位可执行文件)。

COBOL 本身可移植的,即使在不同的编译器之间也是如此(如果您将自己限制为“标准”COBOL 或仅使用编译器共享的扩展),但无论如何您都需要“一些”本机部分。作为一个众所周知的例子,以 Java 或 .NET 为例:“运行时”是一个本地二进制文件,它执行 java(或 msil)字节码。

有一些 COBOL 编译器生成中间代码,这些代码实际上是可移植的,可以与您必须预先安装的“本机运行时”一起使用。

对于您的情况,最简单的选择是:采用兼容的编译器并在此平台上为该平台重新编译您的 COBOL 源代码。我建议 OpenCOBOL 的继任者:GnuCOBOL,使用官方的 windows binaries


推荐阅读