我正在深入到cobol的世界,并编写了一个简单的程序,它使用opencobol(cobc)从kdeplasa命令行编译并运行。我看到一些站点提到cobol是非常可移植的,不需要多次编译,但是当我试图在windows 10(即32位)上运行相同的输出程序时,系统声明该程序是16位应用程序,因此无法运行。
是否有一些参数可以与cobc一起使用以使我的程序能够在windows 10上运行,或者我根本上误解了这种语言的可移植性?
编译命令:cobc -x -o program program.cob

最佳答案

您的程序可能已经是64位的可执行文件(取决于您的实际操作系统,否则是32位的),但它绝对不是Windows二进制文件(而且由于Windows无法识别它,它只是猜测这是16位的可执行文件)。
COBOL本身是可移植的,即使是在不同的编译器之间(如果您将自己限制在“标准”COBOL或只使用编译器使用的共享扩展),但是无论如何您都需要“一些”本机部分。
作为一个众所周知的例子,使用Java或.NET:“运行时”是一个本地二进制文件,它执行Java(或MSIL)字节码。
有些COBOL编译器生成的中间代码实际上是可移植的,可以与必须事先安装的“本机运行时”一起使用。
对于您的情况,最简单的选择是:使用兼容的编译器并在此平台上重新编译此平台的COBOL源代码。
我建议opencobol的继承者:GnuCOBOL,使用official windows binaries

关于windows - 将COBOL编译为Windows的32位可执行文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54642361/

10-11 21:12