2014-12-12 6 views
0

Несколько лет назад я создал программу с использованием TurboC IDE, и эта программа также может быть запущена с использованием DOSbox. Теперь, когда я попытался запустить любую программу, которая была составлена ​​с использованием GCC в DOSbox, это сообщение пришло:Почему программы, скомпилированные с использованием GCC, не запускаются с использованием DOSbox, в то время как файлы, скомпилированные с использованием Borland (Turbo C), могут?

Эта программа не может быть запущена в режиме DOS

Так что мой вопрос, почему не можно запускать программы, скомпилированные с использованием GCC в DOSbox, в то время как скомпилированные из TurboC?

PS: Причина, по которой я хочу запустить их в DOSbox, заключается в том, что я хочу запускать эти программы на своем телефоне (который установлен DOSbox).

+0

Возможно, они, по умолчанию, скомпилированы с помощью консоли Windows или 32/64-разрядной исполняемой заглушки. Проверьте цели компиляции для 'gcc'. (Но я серьезно сомневаюсь, что «MS DOS» по-прежнему доступен.) – usr2564301

+0

Вам нужен кросс-компилятор DOS. Вы не можете скомпилировать свою программу на хост-системе и ожидать, что она будет запущена на другой полностью несвязанной системе. В качестве альтернативы, скомпилируйте программу непосредственно в DOSBox, хотя это звучит как больше проблем, чем того стоит. –

+0

@remyabel, разве вы не можете ожидать этого, если бы вы написали свой код в соответствии со стандартом, избегая каких-либо расширений? – ChiefTwoPencils

ответ

1

Поскольку MS DOS - это 16-разрядная операционная система и не поддерживает 32-разрядные программы. Кроме того, современные операционные системы имеют гораздо более строгий взгляд на прямой доступ к аппаратным средствам, поэтому современные программы должны работать через некоторые уровни абстракции оборудования, которые также отсутствуют в MS DOS.

1

Существует распределение GCC под названием «DJGPP», которое позволяет скомпилировать программы с использованием GCC и использует DPMI для достижения этого. Dos Protected Mode Interface, вы должны запустить программу в защищенном режиме, в основном. Есть и другие среды C, такие как Watcom, которые делали то же самое, но я не думаю, что Borland когда-либо делал что-нибудь с этим.