[英]How to compile c/c++ to ms-dos .com programs?
我在GNU GCC编译器中使用Code :: Blocks。 我的问题是:有什么方法可以将c / c ++代码编译为ms-dos 16bit(.com)可执行格式?
我试图设置构建选项并在网上搜索编译器参数,但找不到任何东西。
您当然可以将C和/或C ++(一种古老的方言)编译为16位MS-DOS .com文件。 您使用Code :: Blocks拥有的编译器/链接器几乎可以肯定不能这样做。
特别是,至少就我所知,gcc从未尝试过为16位分段内存环境生成代码。 gcc至少有一个端口连接到DOS扩展程序( DJGPP ,但它生成.exe文件而不是.com,并且它使用专有的DOS扩展程序以及旧版本的gcc)。
如果确实需要生成.com文件,则有很多选择,但是所有编译器都相当老,因此,特别是对于C ++,它们接受的语言非常有限。
警告:如前所述,所有这些都非常古老。 一般来说,他们接受的C是相当符合标准的C89,但仅适用于相当小的程序(就代码和数据大小而言,这是必不可少的:.com文件基本上限于合计64 KB的数据和代码)。 在C ++他们接受和任何东西,甚至有点接近现代之间的差异是深刻得多(例如,一些根本不支持模板)。 这里所有提到的一致性都是相对于当时的其他编译器而言的。 按照现代标准,它们的一致性始终很糟糕。
那时也有很多,但是这些可能占当时市场的90%以上。
您正在寻找的是exe2bin。 这是DOS附带的实用程序,用于将.EXE格式的对象代码转换为.COM格式(一个64K段中的代码和数据)。 它与DOS和一些编译器/汇编器一起提供。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.