我在Mac OS X上的Snow Leopard下運行GCC 4.2.1。我想用它來編譯我寫的一些舊的C/C++ DOS遊戲15年前,所以我可以在DosBox下運行它們。要做到這一點,他們顯然需要在DOS可執行格式編譯,誰能告訴我如何使用GCC做到這一點?在Mac OS上使用GCC編譯用於MS-DOS的C程序(DOSBox)
謝謝!
我在Mac OS X上的Snow Leopard下運行GCC 4.2.1。我想用它來編譯我寫的一些舊的C/C++ DOS遊戲15年前,所以我可以在DosBox下運行它們。要做到這一點,他們顯然需要在DOS可執行格式編譯,誰能告訴我如何使用GCC做到這一點?在Mac OS上使用GCC編譯用於MS-DOS的C程序(DOSBox)
謝謝!
DOSBox在仿真下運行16位x86實模式代碼。 OSX 10.6上的常規GCC編譯器將OSX操作系統和32位x86保護模式作爲目標,因此您無法使用該編譯器構建在DOSBox中運行的代碼。
你可以做的是在DOSBox本身運行DOS編譯器。 DJGPP是GCC的MS-DOS端口,但它生成目標位於DPMI子系統的32位保護模式代碼。我不清楚DOSBox是否支持DPMI,但我想象它是這樣的,而DJGPP本身在DOSBox compatability list中,所以我們可以想象,它生成的代碼也可以運行,如果它不會做任何異常的事情仿真的硬件。
Borland Turbo C也在兼容性列表中,並且TC 2.01是合法免費提供的。其他版本提供下載elsewhare,但我懷疑這種分發的合法性。
但是,一個更強大的解決方案可能是使用VirtualBox在OSX上託管的虛擬機中安裝真正的MS-DOS或DOS兼容操作系統。如果您沒有MS-DOS副本,則可以嘗試FreeDOS。
是16位或32位環境與DOS擴展書面舊的DOS遊戲嗎?
如果是16位代碼,GCC將不會有任何用處。你可能想看看OpenWatcom或Digital Mars,這兩個都聲稱支持16位的DOS(儘管我不知道它們的工作效果如何)。您可能需要在Windows VM中運行編譯器(當然,對於Digital Mars,不知道OpenWatcom)。
如果您正在尋找32位DOS Extender工具鏈,上述兩者都聲稱爲此工作,但您也可能得到GCC爲您工作(DJGPP可能會有幫助 - 我再也不知道了它是如何工作的,或者它是否可以從Linux或Mac環境中進行交叉編譯)。
+1對於Turbo C. – 2010-12-06 22:48:51