Как мне скомпилировать программы для DOS в Debian? - PullRequest
9 голосов
/ 15 марта 2009

Для моего класса на ассемблере мы пишем DOS-программы с использованием DPMI. К сожалению, у меня нет доступа к 32-битной Windows-машине все время. У меня установлена ​​виртуальная машина Debian практически на каждом компьютере, которым я пользуюсь.

У меня установлены DOSBox и DOSEMU. Можно ли как-нибудь собрать и скомпилировать программы в Linux, а не в DOS? Я использую nasm, поэтому у меня не возникает проблем с его сборкой в ​​формате DOS. Однако у меня возникают проблемы при запуске его через компилятор с моим C-кодом и получении исполняемого файла DOS (с использованием gcc или MinGW).

Есть ли какой-нибудь способ сделать это, или я собираюсь установить все инструменты под DOS?

Ответы [ 4 ]

8 голосов
/ 03 октября 2009

BCC в Debian и способен генерировать приличный код для 8080 до 80386. Используйте ключ -Md для создания двоичного файла MS-DOS.

7 голосов
/ 15 марта 2009

Я даже не уверен, что вы можете скомпилировать DOS-приложения, используя GCC. Давным-давно существовал вариант компилятора gcc под названием DJGPP (или что-то в этом роде). Я никогда не работал, хотя.

Вероятности того, что вы сможете кросс-компилировать GCC для DOS в эти дни, практически равны нулю.

Я предлагаю вам попробовать старый компилятор Watcom. Это нативный компилятор DOS, и его реализация DPMI также работает как прелесть в DosBox. Взаимодействие с скомпилированными объектными файлами NASM также не является проблемой (я сделал это пару лет)

Сегодня компилятор сделан с открытым исходным кодом и называется OpenWatcom.

http://www.openwatcom.org/index.php/Main_Page

3 голосов
/ 15 марта 2009

Вероятно, самый простой путь для вас - использовать стандартные инструменты DOS для этой задачи.

DOSBOX - действительно хороший эмулятор.

2 голосов
/ 13 декабря 2009

DJGPP смехотворно прост в установке, нужно минимум три .ZIP:

  1. BNU219B.ZIP (ассемблер, компоновщик, библиотекарь)
  2. GCC441B.ZIP (компилятор C)
  3. DJDEV204.ZIP (libc, headers)

http://www.delorie.com/djgpp/getting.html

unzip *.zip -d c:\djgpp && 
set DJGPP=c:\djgpp\djgpp.env &&
path c:\djgpp\bin;%PATH%

gcc myfile.c -o myfile.exe

Чтобы получить DOS-совместимый вывод, вам придется либо использовать DOS-компилятор в DOSEMU (не DOSBox !! слишком медленный и глючный, предназначен только для игр), либо использовать кросс-компилятор Linux (DJ для этого на сайте есть RPM).

Однако, если вы хотите 100% 16-битный код, вам придется использовать что-то другое (например, OpenWatcom). OpenWatcom также поддерживает Linux (бета !!) хост и цель (хотя нет общих библиотек, хотя, IIRC), но вам, возможно, придется скомпилировать его самостоятельно с GCC.

...