ジャンル不定の日記です。

mingw-w64でWindows 9x用のクロスコンパイル

現行バージョンのVirtualbox上のWindows XPだと3Dアクセラレーションが使えないが、Windows 9xならsoftgpuで3Dアクセラレーションが使えることを知って年末にWindows ME入れてゲームやってたが、
挫折すると思うがWindows 9x用の実行ファイルとかドライバとか作ることに興味が出たんでHello Worldやってみた。

まずmingw-w64-gccってのでLinux上からWindows用の64bitまたは32bitのバイナリが作れる。
コンパイルしてみたんだが、まずXPで実行したら、
api-ms-win-crt-environment-l1-1-0.dllがない言われた。
ググったら、Microsoftのucrt(Universal C Runtime)ってものが必要で、XPなら入れれるぽいんだがWindows 10以降じゃないと標準では入ってないみたいで、
それ以前は代わりにmsvcrt(Microsoft Visual C++ Runtime)が使われてたみたい。
で、mingw-w64の古いバージョンはmsvcrtが必要だったのが、バージョン13から?ucrtを使うように変更されたぽい。

mingw-w64-gccをインストールするとmingw-w64-crtってのが依存関係でインストールされるが、AURにあるmingw-w64-crt-msvcrtってのをインストールするとucrtではなくmsvcrtが使われるようになる。
mingw-w64-crtとmingw-w64-crt-msvcrtは競合するんでmingw-w64-crtは削除される。

で、mingw-w64-crt-msvcrtをインストールしてHello WorldをコンパイルしてXPのコマンドプロンプトで実行したらできた。
98のMS-DOSプロンプトでもできた。

msvcrtはMEから標準搭載なんで98と95は別途インストールが必要。