在Mac OS上使用GCC编译C程序以在MS-DOS(DOSBox)上运行

6

我正在 Mac OS X 的 Snow Leopard 下运行 GCC 4.2.1。我想使用它来编译我 15 年前写的一些旧的 C/C++ DOS 游戏,以便我可以在 DosBox 下运行它们。为了做到这一点,它们显然需要使用 DOS 可执行文件格式进行编译,请问有谁能告诉我如何使用 GCC 进行编译呢?

谢谢!

3个回答


4
DOSBox是在仿真环境下运行16位x86实模式代码的。在OSX 10.6上,常规GCC编译器针对的是OSX操作系统和32位x86保护模式,因此您不能使用它来构建要在DOSBox中运行的代码。
您可以尝试在DOSBox本身中运行DOS编译器。DJGPP是GCC的MS-DOS端口,但它生成的是针对DPMI子系统的32位保护模式代码。我不确定DOSBox是否支持DPMI,但我想它可能会,并且DJGPP本身在DOSBox兼容性列表中,因此如果它没有对仿真硬件做任何特殊的事情,那么它生成的代码也可能运行。

Borland Turbo C也在兼容性列表中,TC 2.01是合法免费提供的。其他版本可以在其他地方下载,但我怀疑这种分发的合法性。

然而,更强大的解决方案可能是在OSX上托管一个虚拟机中安装真正的MS-DOS或DOS兼容操作系统,使用VirtualBox。如果您没有MS-DOS的副本,可以尝试FreeDOS


2
你的旧DOS游戏是写于16位还是32位环境下的DOS扩展程序?如果是16位代码,GCC将毫无用处。你可能需要考虑使用OpenWatcomDigital Mars,两者都声称支持16位DOS(虽然我不知道它们在这方面的表现如何)。你可能需要在Windows虚拟机中运行编译器(对于Digital Mars肯定是这样,不确定OpenWatcom是否需要)。如果你正在寻找32位DOS扩展工具链,上述两种工具也声称可以胜任,但你也可以尝试使用GCC(DJGPP可能会有所帮助——同样,我不知道它在Linux或Mac环境下是否能进行交叉编译)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接