はじめに
どうしても手元で Win32 実行ファイルをビルドする必要があり、未体験だった Mingw-w64 on Linux を試してみることにしました。
が、どのくらいディスクスペースを必要とするのか不明です。不安です。なぜ不安なのかはコチラに書きましたので省略します。
ということで調べてみました。
結論
6.0.0-3 で 1GiB 弱でした。そんなに小さくなかった。
実験
幾つかのパターンがありそうなので、実験してみました。いずれも Docker で debian:10.9-slim に apt install したものです。
↓こんな感じ。
FROM debian:10.9-slim
RUN apt update && apt -y install mingw-w64
結果は下記です。
指定パッケージ | サイズ |
---|---|
mingw-w64 mingw-w64-tools | 974 |
mingw-w64 | 884 |
gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 | 539 |
gcc-mingw-w64-x86-64 | 407 |
gcc-mingw-w64-i686 g++-mingw-w64-i686 | 496 |
gcc-mingw-w64-i686 | 378 |
gcc-mingw-w64-i686 だけでもビルドできます。binutils なども依存パッケージとしてインストールされますので。
Win32 で C だけで足りれば、かなり小さく済みますね。
コーディング中は 32bit/64bit の両方が必要ということも無いでしょうから、別々に docker image を作っておいたほうが便利でしょうか。どうでしょうか。
余談
MinGW って MinGW ですよね。Mingw-w64 は MinGW-W64 じゃないんですね。
いや、別に、大丈夫です。問題ありません。
間違えないように注意します。商標は正確に。大事。
おわりに
ということで、手軽に Win32 できそうです。
当初は .NET 5 の倍かよ!と叫んでしまいましたが、ダウンサイズする余地も残されていて。
めでたしめでたし。
ホントは
GetCurrentProcessToken() を使いたかったのですけど、6.0.0-3 では使えませんでした。ざっくり v6 は Windows 8 未満ということですかね。
Mingw-w64 は 2021-05-22 に v9 がリリースされてますから、Debian Buster のは結構古いってことですね。v6 のリリースは 2018-09-17 とのことです。
Ubuntu はというと、Focal Fossa のは v7 ですね。
よし、ネットワーク帯域が余っている日に v7 試してみよう。