Использование GCC в Mac OS для компиляции программы C для MS-DOS (DOSBox) - PullRequest
6 голосов
/ 06 декабря 2010

Я запускаю GCC 4.2.1 под Snow Leopard на Mac OS X. Я хочу использовать его для компиляции некоторых старых игр для C / C ++ DOS, которые я написал 15 лет назад, чтобы я мог запускать их под DosBox .Для этого их, очевидно, нужно скомпилировать в исполняемом формате DOS. Может кто-нибудь сказать мне, как это сделать с помощью GCC, пожалуйста?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 07 декабря 2010

DOSBox выполняет эмуляцию 16-битного кода реального режима x86.Обычный компилятор GCC в OSX 10.6 ориентирован на операционную систему OSX и 32-битный защищенный режим x86, поэтому вы не можете использовать его для создания кода для запуска в DOSBox.

Что вы можете сделать, это запустить компилятор DOSв самом DOSBox. DJGPP является портом MS-DOS GCC, однако он генерирует 32-битный код защищенного режима, предназначенный для подсистемы DPMI.Мне не ясно, что DOSBox поддерживает DPMI, но я предполагаю, что это так, и сам DJGPP находится в списке совместимости DOSBox , поэтому можно было бы предположить, что генерируемый им код может работать, если он этого не делает.сделать что-то слишком необычное для эмулируемого оборудования.

Borland Turbo C также есть в списке совместимости, а TC 2.01 на законных основаниях доступен бесплатно.Другие версии предлагаются для скачивания в другом месте, но я сомневаюсь в законности такого распространения.

Однако более надежное решение, вероятно, заключается в установке подлинной MS-DOS или DOS-совместимой ОС на виртуальной машине, размещенной на OSX, с использованием VirtualBox .Если у вас нет копии MS-DOS, вы можете попробовать FreeDOS .

4 голосов
/ 06 декабря 2010
2 голосов
/ 07 декабря 2010

Ваши старые игры для DOS написаны для 16-битной или 32-битной среды с расширителем DOS?

Если это 16-битный код, GCC будет бесполезен.Возможно, вы захотите взглянуть на OpenWatcom или Digital Mars , оба из которых требуют 16-битной поддержки DOS (хотя я понятия не имею, насколько хорошо они работают для этого).Возможно, вам придется запустить компилятор на виртуальной машине Windows (конечно, для Digital Mars, но не уверен насчет OpenWatcom).

Если вы ищете 32-битный набор инструментов DOS Extender, оба из вышеперечисленных также претендуют на работудля этого, но вы также можете заставить GCC работать на вас ( DJGPP может помочь - опять же, я не знаю, насколько хорошо он работает или будет кросс-компиляция из среды Linux или Mac).

...