【问题标题】:C compiler for MS-DOS [closed]MS-DOS 的 C 编译器 [关闭]
【发布时间】:2013-02-12 08:18:34
【问题描述】:

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

【问题讨论】:

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

标签: c virtualbox dos


【解决方案1】:

以下是其他人遗漏的一些细节:

  1. 根本没有人提到DJGPP

    它是 GCC 的保护模式 DOS 端口,并且可能拥有所有开源选项中最多的库和指南可供选择。 (包括Turbo Vision portinstallation HOWTO

  2. 无论您尝试做什么,OpenWatcom (source) 都可能满足您的需求。

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

      事实上,当他passed away 时,DOS/4GW 的创建者正试图挖掘更新版本的 DOS/4GW 的源代码来为 Open Watcom 做出贡献。

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

    3. 1234563 " 32 位 API 插件。
  3. OpenWatcom 可以通过一次安装针对所有受支持的平台。 (我用它从 Linux 构建各种 DOS 和 Windows 测试 EXE。)

  4. OpenWatcom 可以针对 很多 复古平台:

    • COM 文件
    • 实模式 EXE(有一组单独的选项可用于选择最低 CPU 要求)
    • 保护模式 EXE(您可以选择多个扩展器)
    • Windows 3.1 EXE(带或不带 Win386 扩展程序)
    • 您可能不关心的许多其他格式
1234563可以尝试。 (虽然我不知道它对 16 位 x86 生态系统中使用的各种内存模型和调用约定的支持有多完善。) 1234563集成到基于 Linux 的构建自动化中。
  • 这里有一些其他免费的 DOS C 编译器,尽管它们缺乏 DJGPP 和 OpenWatcom 所拥有的庞大生态系统:

  • 您可能还想在您构建的 EXE 文件上运行UPX 压缩器,这样您就可以在您制作的任何软盘映像上拥有更多可用空间。 (如果您的目标是早于 386 的东西,请不要忘记使用 --8086 运行它。)

    capable 用于压缩 EXE、COM 和 SYS 文件,并且使用这种可执行压缩在过去很常见。

    (但是,UPX 不压缩的三种主要格式中的两种是 OS/2 和 Windows 3.1 可执行文件。鉴于LxLite 与 OpenWatcom 不兼容,我仍在寻找最佳选择- 生成的 EXE。)

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 差点忘了 Turbo C 的优秀编译器!
      • OW 在 DOS 下工作并为 DOS 编译(甚至在 Windows 下),没有问题。不过,有几组二进制文件(DOS 和 Windows)。
      • 感谢帮助,我已经下载了文件,注册帐户后,我做了第一个下载磁盘的软盘映像,将其设置在虚拟软盘设备中,写道在 DOS 中“cd A:”什么也没发生,“cd A:”再次显示“除法溢出”。当我尝试使用@Alos 回答虚拟 cd/dvd 磁盘时发生了同样的事情:(
      • 我为我订购了一台笔记本电脑。 (现在我依靠安卓设备),当它到达时,如果我记得我会尝试看看:)
      • @speeder 你有你订购的笔记本电脑吗? :P
      【解决方案3】:

      我已经安装了编译器,它运行成功,如果你想要这里的 ova 是链接 MS-DOS ova with C compiler

      打开编译器:

      cd TC
      
      TC
      

      就是这样!您可以编写C并编译。最好的部分是您可以不受任何限制地处理寄存器和内存。

      【讨论】:

        【解决方案4】:

        您可能想试试Open WatcomBorland Turbo Series。还有其他选择,但最好的是那两个恕我直言。

        【讨论】:

          【解决方案5】:

          Borland C++ 4.53 是最有能力的,因为它可以从多个 IDE(DOS 或 Windows IDE)输出 DOS(在所有内存模型中)以及 Windows 3.1 和 95 可执行文件。它包括命令行工具,但同样,它必须托管在 PC 平台或类似 DOSBox 的平台上。

          这个 Borland C 4 的原始包相当庞大,但并不像 Borland C++ 3.1 附带的文字书架那么疯狂。 Borland C++ 3.1 很可能是历史上最重的最大的零售商业软件产品盒。

          【讨论】:

            【解决方案6】:

            Open Watcom 有一个可以在 DOS 上运行的 C 编译器:Open Watcom

            您可以保存它,然后用它创建一个虚拟软盘:virtual floppy how to

            这应该可以让你在你的虚拟机上安装它。

            【讨论】:

            • 感谢您的帮助,我已经下载了一个名为“open-watcom-c-dos-1.9”的文件,大小为 80 MB,制作了一个 iso,将其设置为虚拟 cd/ dvd盘,然后在DOS下写“cd B:”,什么也没发生,又是“cd B:”,它说“Divide overflow”……我放弃了……
            • @AmbiguousTk 我不会放弃,似乎 Divide 溢出与系统的配置方式有关。可以访问vm上的c盘吗?
            【解决方案7】:

            这里有很多编译器:

            http://www.compilers.net/dir/free/compilers/ccpp.htm

            特别是,我在几个不同的有趣项目中使用了“Pacific C”,我对易用性和整体兼容性都很满意。

            我能够找到一个新的下载 URL:

            http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/devel/c/pacific/

            【讨论】:

              【解决方案8】:

              您可能想看看FreeDOS,它包含一套开发工具。

              【讨论】:

                【解决方案9】:

                Embarcadero Technologies 不久前已将 Borland C++ 编译器作为免费软件发布。遗憾的是没有 IDE,只有命令行工具。

                【讨论】:

                • 他要求的是 C,而不是 C++,Embarcadero 发布了 Turbo C,这是一个 IDE。
                • 根据this page,没有IDE,只有命令行工具。
                • 阅读我的答案,如果是否存在重复的答案,您无需阅读即可清楚地回答。特别是看上面的链接,注意C和C++是不一样的。
                • +1 用于一体式(合法)下载。确实 C 和 C++ 不一样,但是 bcc32 知道如何根据文件扩展名来表现。
                • 那个 C++ 编译器支持 C。但是它只在 Windows 中运行并且只为 Windows 编译。
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2010-09-12
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多