DebianでDOSプログラムをコンパイルするにはどうすればよいですか?
質問
アセンブリ言語クラスでは、DPMIを使用してDOSプログラムを作成しています。残念ながら、私は常に32ビットWindowsマシンにアクセスできません。使用するほぼすべてのコンピューターにDebian仮想マシンがインストールされています。
DOSBoxとDOSEMUの両方をインストールしました。 DOSではなくLinuxでプログラムをアセンブルおよびコンパイルできる方法はありますか?私はnasmを使用しているので、DOS形式でアセンブルするのに問題はないようです。ただし、Cコードでコンパイラーを実行してDOS実行可能ファイルを取得するのに問題があります(gccまたはMinGWを使用)。
これを行う方法はありますか、DOSですべてのツールをインストールする必要がありますか?
解決
GCCを使用してDOSアプリケーションをコンパイルできるかどうかもわかりません。昔、DJGPP(またはそのようなもの)と呼ばれるgccコンパイラバリアントがありました。動作しませんでした。
最近、DOS用のGCCをクロスコンパイルできる可能性はほとんどありません。
古いWatcomコンパイラを試してみることをお勧めします。これはネイティブDOSコンパイラであり、DPMI実装もDosBoxの下で魅力のように機能します。 NASMでコンパイルされたオブジェクトファイルとのインターフェイスも問題ではありません(私はそれを数年しました)
今日、コンパイラはオープンソースになり、OpenWatcomと呼ばれています。
他のヒント
BCC はdebianであり、8080までの適切なコードを生成できます。 80386。 -Md
スイッチを使用して、MS-DOSバイナリを生成します。
おそらく最も簡単な方法は、タスクに標準のDOSツールを使用することです。
DOSBOX は非常に優れたエミュレータです。
DJGPPはとてつもなく簡単にインストールできます。最低限必要な.ZIPは3つだけです。
-
BNU219B.ZIP
(アセンブラー、リンカー、ライブラリアン) -
GCC441B.ZIP
(Cコンパイラ) -
DJDEV204.ZIP
(libc、ヘッダー)
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互換の出力を生成するには、DOSEMUでDOSホストコンパイラーを使用するか(DOSBox !!のように遅くてバグの多いゲーム専用ではありません)、またはLinuxホストクロスコンパイラー(DJのサイトにはそのためのRPMがあります)。
ただし、100%16ビットコードが必要な場合は、他のもの(OpenWatcomなど)を使用する必要があります。 OpenWatcomはLinux(ベータ!!)ホストおよびターゲット(ただし、共有ライブラリはありませんが、IIRC)もサポートしていますが、GCCを使用して自分でコンパイルする必要がある場合があります。