MS-DOS的C编译器

16
我已在VirtualBox虚拟机上安装了MS-DOS 6.22,一切运作正常。这样做的目的是编译一个用C语言编写的程序,该程序可以显示和编辑(虚拟)RAM中的位。但是,我需要一种在虚拟MS-DOS操作系统上安装C编译器的方法。

奇怪的问题,我从未为DOS编写过exe文件,我只知道你需要一个LE文件而不是经典的Windows PE文件。.com文件是一种替代方案,据我所知,它是每个exe文件的一部分。 - rekire
@rekire,实际上,您需要一个MZ文件。LE用于VxD驱动程序和OS/2 2.0应用程序。有关详细信息,请参见https://en.wikipedia.org/wiki/.exe。 MZ也是每个EXE的一部分。 (.com只是一个原始的机器代码块,要复制到内存中并启动。这就是为什么它有很多限制的原因。) - ssokolow
9个回答

18

以下是其他人忽略的一些细节:

  1. 没有人提到DJGPP

    这是GCC的保护模式DOS端口,可能拥有开源选项中最大的库和指南选择。(包括带有Turbo Vision portinstallation HOWTO的安装指南)

  2. 无论你想做什么,OpenWatcomsource)都很可能能够满足你的需求。

    1. OpenWatcom仍然包括使用DOS/4GW的免费许可证,这使它在当时非常受欢迎。 (当您看到像DOOM这样的游戏在启动时说“DOS/4GW Protected Mode Runtime”时,这意味着它是使用Watcom C/C++构建的,因为DOS/4GW是DOS/4G的特殊Watcom捆绑版本。)

      事实上,DOS/4GW的创建者正在寻找新版本的DOS/4GW源代码以供贡献给Open Watcom时去世

    2. 如果您不想怀旧,OpenWatcom会捆绑比DOS/4GW更好的替代品,例如DOS/32和PMODE/W。

    3. 如果您想尝试Windows 3.1编程,请使用OpenWatcom,它包括Win386,这是一个32位扩展程序,用于Window 3.x,Sierra等公司在其Windows 3.1游戏中使用了该程序,然后Microsoft生产了自己的“Win32s” 32位API附加组件。

    4. OpenWatcom可以从单个安装目标所有受支持的平台。(我使用它从Linux构建各种DOS和Windows测试EXE。)

    5. OpenWatcom可以针对很多复古平台进行目标设置:

      • COM文件
      • 实模式EXE(有一组独立的选项来选择最小CPU要求)
      • 保护模式EXE(可选择几个扩展程序)
      • Windows 3.1 EXE(带或不带Win386扩展程序)
      • 许多其他格式,您可能不太关心
  3. 如果您的项目必须在实模式下运行(即没有DJGPP),并且您想要比Open Watcom C/C++中的现代优化器更好的东西,则可以尝试名为GCC IA16的GCC分支。(虽然我不知道它对16位x86生态系统中使用的各种内存模型和调用约定的支持有多完整。)

  4. 如果您想要让IDE和编译器在古老的硬件上运行,Pacific C编译器和IDE将一个286 CPU列为其最低要求,但也可以在DOSEMU中运行,以便轻松集成到基于Linux的构建自动化中。

  5. 这里有一些其他免费的DOS C编译器,尽管它们缺乏DJGPP和OpenWatcom拥有的大型生态系统:

您可能还想在构建的EXE文件上运行UPX压缩器,这样您就可以在任何制作的软盘镜像上获得更多的可用空间。(如果目标是低于386的旧设备,请不要忘记使用--8086运行。)

能够 压缩EXE、COM和SYS文件,使用这种可执行文件压缩在那个年代是很普遍的。

(不过,UPX无法压缩两种主要格式的OS/2和Windows 3.1可执行文件。我仍在寻找最佳选项,因为LxLite与OpenWatcom生成的EXEs不兼容。)


9

适用于DOS的Turbo C编译器非常棒,而且是免费软件。

官方网站链接 http://edn.embarcadero.com//article/20841

还有Microsoft QuickC,但我不知道它有多难找。

或者Watcom C,但我不知道他们的OpenWatcom版本是否适用于DOS。


我差点忘记了Turbo C这个优秀的编译器! - Alos
2
OW 可以在 DOS 中使用,并且可以在 DOS 中编译(甚至在 Windows 下也可以)。不过,有几个二进制文件集(DOS 和 Windows)。 - Alexey Frunze
1
感谢您的帮助,我已经下载了文件,在注册账户后进行了软盘镜像,将其设置在虚拟软盘设备中,在DOS中输入“cd A:”,但没有反应,再次输入“cd A:”时出现“除法溢出”的错误提示。当我尝试使用@Alos的方法来创建虚拟CD / DVD光盘时,也遇到了同样的问题:( - Tarek
我為自己訂了一台筆記本電腦(現在我只有安卓裝置可用),當它到達時,如果我記得的話,我會嘗試看看:) - speeder
@speeder 你收到你订购的笔记本电脑了吗? :P - Tarek
显示剩余2条评论

7
我已经安装了编译器并且成功运行,如果你需要 ova 文件,这是链接:带有 C 编译器的 MS-DOS ova
打开编译器方法如下:
cd TC

TC

就是这样!你可以编写 C 代码并进行编译。最好的部分是,您可以在没有任何限制的情况下处理寄存器和内存。


5

4

4

Open Watcom有一款C编译器可在DOS上使用:Open Watcom

您可以将其保存,然后创建一个虚拟软盘:虚拟软盘操作方法

这样应该可以让您在虚拟机上安装它。


感谢您的帮助,我已经下载了一个名为“open-watcom-c-dos-1.9”的文件,大小为80 MB,制作了一个ISO文件,并将其设置为虚拟CD / DVD光盘,然后在DOS中写入“cd B:”,但没有反应,再次输入“cd B:”,它显示“除法溢出”...... 我已经放弃了... - Tarek
2
@AmbiguousTk 我不会放弃,似乎除法溢出与系统配置有关。你能访问虚拟机上的C盘吗? - Alos

4
你可能想要了解一下FreeDOS,它包含一套开发工具。 FreeDOS

3
Borland C++ 4.53是功能最强的编程工具之一,它可以输出DOS(在所有内存模型下)和Windows 3.1/95可执行文件,并支持多个IDE,无论是DOS还是Windows版。它包括命令行工具,但必须在PC平台或DOSBox等类似软件上运行。
Borland C 4的原始套装相当庞大,但远不及Borland C++ 3.1的字面意义上的书架那么疯狂。Borland C++ 3.1很可能是历史上最重、最大的零售商业软件产品盒子。

-3
Embarcadero Technologies曾经发布了Borland C++编译器的免费软件版本。不幸的是,它只提供命令行工具,没有集成开发环境(IDE)。

他要的是C语言,而不是C++,Embarcadero发布了Turbo C,这是一个集成开发环境。 - speeder
根据此页面的说明,没有包含IDE,只有命令行工具。 - cesarse
请阅读我的回答,你显然没有看到是否存在重复的答案就回答了。特别是,请阅读相关链接,并注意C和C++不是同一种语言。 - speeder
1
+1 为全合法下载点赞。虽然 C 和 C++ 不同,但 bcc32 知道如何根据文件扩展名进行行为调整。 - cesarse
2
那个C++编译器支持C语言。但它只能在Windows系统上运行,并且只能编译为Windows系统使用的程序。 - Alexey Frunze

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