使用linux交叉编译c/c++的dos程序(不是win32控制台)

事情是这样的,因为闲着没事干,我玩起了dos系统。今天突发奇想,能不能用linux交叉编译dos下的应用程序。

于是说干就干。

根据我的记忆,用nasm编译汇编是可以直接生成dos下的exe可执行程序的,那么gcc肯定也可以做到。

根据经验,我安装了mingw-w64这玩意,以前用这玩意编译过自己写来测试的win32窗体程序。

于是写了个helloworld测试一下,用软盘传到dos7.1系统下之后,输入运行,结果弹出来了下面一串东西。

this program cannot be run in dos mode

很显然,编译出来的程序并不兼容纯dos系统。

翻了半天man手册之后,发现其中有一个-mconsole的选项,console是控制台的意思,我寻思着应该没准可以运行。

this program cannot be run in dos mode

然而事实再一次打脸,显然windows控制台和实模式下的dos是两个不同的物种。

纠结半天,只好去寻求百度,可惜中文环境里没有那么多的闲人,仅找到的的一条关于此的信息是百度知道。

提问者发出了和我一样的疑问,而回答者大概在说别妄想了,32位下的gcc编译器编译不出16位的程序。

显然这位答主对计算机原理有所误解,如果他了解嵌入式的话,大概就会发现,甚至64位的软件一样可以编译出8位乃至4位的单片机程序。

无奈只好硬着头皮去英文环境里搜索,

Building an Open Watcom Linux-to-DOS cross-compiler | Reinventing The Wheel (mcejp.github.io)

DOS - flashrom

很快在这里看到了两种不同的解决方案。

照着教程,编译、运行,成功点亮helloworld。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值