【发布时间】:2011-05-21 05:25:54
【问题描述】:
我在 Mac OS X 上的 Snow Leopard 下运行 GCC 4.2.1。我想用它来编译我 15 年前写的一些旧的 C/C++ DOS 游戏,以便我可以在 DosBox 下运行它们。要做到这一点,他们显然需要以 DOS 可执行格式编译,谁能告诉我如何使用 GCC 来做到这一点?
谢谢!
【问题讨论】:
我在 Mac OS X 上的 Snow Leopard 下运行 GCC 4.2.1。我想用它来编译我 15 年前写的一些旧的 C/C++ DOS 游戏,以便我可以在 DosBox 下运行它们。要做到这一点,他们显然需要以 DOS 可执行格式编译,谁能告诉我如何使用 GCC 来做到这一点?
谢谢!
【问题讨论】:
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 合法地免费提供。其他版本在其他地方提供下载,但我怀疑这种分发的合法性。
然而,一个更强大的解决方案可能是使用VirtualBox 在托管在 OSX 上的虚拟机中安装真正的 MS-DOS 或 DOS 兼容操作系统。如果你没有 MS-DOS 的副本,你可以试试FreeDOS。
【讨论】:
您的旧 DOS 游戏是为 16 位还是为带有 DOS 扩展器的 32 位环境编写的?
如果是 16 位代码,GCC 将没有任何用处。您可能想查看OpenWatcom 或Digital Mars,它们都声称支持 16 位 DOS(尽管我不知道它们在这方面的工作情况如何)。您可能必须在 Windows VM 中运行编译器(当然是针对 Digital Mars,不确定 OpenWatcom)。
如果您正在寻找 32 位 DOS Extender 工具链,以上两者都声称可以为您工作,但您也可以让 GCC 为您工作(DJGPP 可能会有所帮助 - 再说一次,我不知道知道它的工作情况,或者它是否会在 Linux 或 Mac 环境中交叉编译)。
【讨论】:
【讨论】: