我正在深入研究COBOL,并编写了一个简单程序,该程序可以使用open-cobol(cobc)从我的KDE Plasma命令行按预期的方式编译和运行。我看到一些站点提到COBOL具有很好的可移植性,不需要多次编译,但是当我尝试在Windows 10(即32位)上运行相同的输出程序时,系统指出该程序是16位的应用程序,因此无法运行。
是否存在可与cobc一起使用的参数,以使我的程序可以在Windows 10上运行,还是从根本上误解了该语言的可移植性?
编译命令:cobc -x -o program program.cob
答案 0 :(得分:3)
您的程序可能已经是64位可执行文件(取决于您的实际操作系统,否则为32位),但是绝对不是Windows二进制文件(并且由于Windows无法识别它,因此它只是猜测这是16位可执行文件)。
COBOL本身是 可移植的,即使在不同的编译器之间( if ,您也只能使用“标准” COBOL或仅使用编译器共享的扩展名),但是您在任何情况下都需要“某些”本机部分。 以Java或.NET为例,这是一个众所周知的示例:“运行时”是本机二进制文件,它执行Java(或msil)字节代码。
有些COBOL编译器生成的中间代码实际上是可移植的,并且可以与您必须事先安装的“本地运行时”一起使用。
适合您的情况的最简单选择:使用兼容的编译器,然后在该平台上为此平台重新编译您的COBOL源代码。 我建议使用GnuCOBOL来代替OpenCOBOL:official windows binaries。