gpt4 book ai didi

c++ - 如何将c/c++编译为ms-dos .com程序?

转载 作者:行者123 更新时间:2023-11-30 18:53:18 27 4
gpt4 key购买 nike

我使用 Code::Blocks 和 GNU GCC 编译器。我的问题是:有没有办法将c/c++代码编译为ms-dos 16位(.com)可执行格式?
我尝试设置构建选项并在网上搜索编译器参数,但我找不到任何东西。

最佳答案

您当然可以将 C 和/或 C++(一种古老的方言)编译为 16 位 MS-DOS .com 文件。不过,您使用 Code::Blocks 的编译器/链接器几乎肯定不能做到这一点。

特别是,至少据我所知,gcc 从未尝试过为 16 位分段内存环境生成代码。至少有一个 DOS 扩展器的 gcc 端口( DJGPP ,但它生成 .exe 文件,而不是 .com,并且它使用专有的 DOS 扩展器。这最初使用的是旧版本的 gcc,但后来已更新为更新版本的 gcc。

如果你确实需要生成 .com 文件,有很多选择,但所有编译器都相当老旧,所以特别是对于 C++,它们接受的语言非常有限。

针对 MS-DOS 的工具链。

警告:正如已经指出的,所有这些都非常。一般来说,他们接受的 C 语言相当符合 C89,但仅适用于相当小的程序(无论是在代码还是数据大小方面——这是必要的:.com 文件基本上限制为数据和代码的总大小为 64Kbytes)。他们接受的 C++ 与任何接近现代的语言之间的差异要深刻得多(例如,有些根本不支持模板)。这里所有提到的一致性都是相对于当时的其他编译器而言的;按照现代标准,它们的一致性都很糟糕。

  1. 微软:只在相当短的时间内销售了用于 MS-DOS 的 C++ 编译器——他们进入市场的时间有些晚,并且很早就退出市场,转向仅生成 32 位 Windows 可执行文件的编译器。众所周知,优化比语言一致性更为出名。
  2. Borland:微软的镜像。一致性较好,优化较差,可能是最后放弃MS-DOS市场的。他们最后的几个 MS-DOS 编译器甚至支持 C++ 模板(在当时相当新)。
  3. Watcom:为数不多的 still available 之一作为免费下载,但没有商业支持。当它是新的时,通常被认为是一致性和优化方面最好的方法之一。它显然是最近更新的(至少在某种程度上),但我没有使用过最新版本,所以我无法对这些更新发表真正的评论。
  4. Metaware:当时是一个相当昂贵的选择。我从未使用过它,但我尊敬的一些人高度认为它是你能得到的最好的编译器。主要针对嵌入式系统。
  5. Datalight/Zortech/Symantec/Digital Mars:另一个是 still officially available 。有一小群但极其忠诚的追随者。我尝试了一段时间,但从未找到一个令人信服的理由比其他人更喜欢它。 Digital Mars 仍然维护着这个编译器,因此它是少数几个仍然得到相当定期更新的编译器之一。

当时也有不少,但这些可能占当时市场的 90% 以上。

关于c++ - 如何将c/c++编译为ms-dos .com程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33152287/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com