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

时间:2010-12-06 20:50:30

标签: c++ c macos gcc dos

我在Mac OS X上运行Snow Leopard下的GCC 4.2.1。我想用它来编译15年前写的一些旧的C / C ++ DOS游戏,以便我可以在DosBox下运行它们。为此,他们显然需要以DOS可执行格式编译,有人能告诉我如何使用GCC这样做吗?

谢谢!

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:4)

DOSBox在模拟下运行16位x86实模式代码。 OSX 10.6上的常规GCC编译器针对OSX操作系统和32位x86保护模式,因此您无法使用它来构建在DOSBox中运行的代码。

您可以做的是在DOSBox本身运行DOS编译器。 DJGPP是GCC的MS-DOS端口,但它生成针对DPMI子系统的32位保护模式代码。我不清楚DOSBox是否支持DPMI,但我想它确实如此,并且DJGPP本身位于DOSBox compatability list中,因此可以想象它生成的代码如果不做任何事情也会运行普通的模拟硬件。

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

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

答案 2 :(得分:2)

您的旧DOS游戏是针对16位还是针对具有DOS扩展程序的32位环境编写的?

如果它是16位代码,GCC将没有任何用处。您可能希望查看OpenWatcomDigital Mars,这两者都声称支持16位DOS(尽管我不知道它们的工作情况如何)。您可能必须在Windows VM中运行编译器(当然对于Digital Mars,不确定OpenWatcom)。

如果您正在寻找32位DOS Extender工具链,上述两者都声称可以为此工作,但您也可能让GCC为您工作(DJGPP可能有帮助 - 再次,我不要不知道它是如何工作的,或者它是否会从Linux或Mac环境中交叉编译。)