我在GNU GCC编译器中使用Code :: Blocks。
我的问题是:有没有办法将c / c ++代码编译成ms-dos 16bit(.com)可执行格式?
我尝试设置构建选项并在网上搜索编译器参数,但我找不到任何东西。
答案 0 :(得分:3)
你当然可以将C和/或(一种古老的方言)C ++编译成16位MS-DOS .com文件。你使用Code :: Blocks的编译器/链接器几乎肯定不能这样做。
特别是,至少据我所知,gcc从未尝试过为16位分段内存环境生成代码。至少有一个gcc端口到DOS扩展器(DJGPP,但是它生成.exe文件,而不是.com,它使用专有的DOS扩展器以及古代版本的gcc )。
如果你真的需要生成一个.com文件,那么有很多选项,但是所有编译器都很老了,所以特别是对于C ++而言,他们接受的语言非常有限。
警告:如前所述,所有这些非常旧。一般来说,他们接受的C是合理符合的C89,但仅适用于相当小的程序(在代码和数据大小方面 - 必要性:.com文件基本上限于总共64K字节的数据和代码)。他们接受的C ++与现代任何接近现代的C ++之间的差异要大得多(例如,有些人根本不支持模板)。这里所有提及的一致性都与当时的其他编译器有关;按照现代标准,它们的一致性非常糟糕。
当时还有不止一些,但这些可能占当时市场的90%以上。
答案 1 :(得分:-1)
您正在寻找的是exe2bin。这是DOS附带的实用程序,用于将.EXE格式的目标代码转换为.COM格式(一个64K段中的代码和数据)。它带有DOS和一些编译器/汇编器。