Amazon Linux 2023のオンプレミスでの検証環境をWSL上で動かすのにWSL-ToyCを使っているのですが、作者さんがリリースしてくれているバイナリにはx86-64アーキテクチャ向けのものしかなく、Prismではなく、できる限りネイティブなバイナリで動かしたい自分としてはなんとなくもやもや~っと。
そんなわけで、自分でWSL-ToyCをGitHubからダウンロードしてコンパイルしようとしたのだけど、MakefileをみるとどうやらWSL-ToycはLinux上でWindowsの実行ファイル(.exe)を作れるGCC(GNU C Compiler)x86_64-w64-mingw32-gcc
を使ってビルドされているらしい。
x86_64-w64-mingw32-gcc
はその名前から判るようにx86-64向けのバイナリを吐き出すコンパイラなので、これをそのまま使ってWSL-Toycをビルドしても元とおなじくx86-64ターゲットのものになっちゃう。
そこでちょろっとソースコードを覗いてみたら、それほど複雑なコードでもなく、普通にAarch64向けのバイナリを吐き出すx86_64-w64-mingw32-gcc
のようなものがあればいいわけで、さくっとGoogleさんでアプリ名の頭のx86_64
をaarc64
やarm64
に変えて探してみましたw
そしたら、まだまだ安定版とは言えないらしいこど、それなりには動くようになったよとアナウンスされているWindows on Arm64 GNU Toolchain Cross-CompilerというGitHubのページを発見!
ビルド作業はといっても実に簡単、リポジトリのREADME.md
に書かれているとおりにWSL2のUbintuやネイティブに動作しているUbuntu上でリポジトリをクローンしてビルド用のシェルスクリプトを動かすだけでホームディレクトリ上にビルドされたコンパイラ環境がインストールされます。
GitHubからソースコードを取得する
git clone https://github.com/Windows-on-ARM-Experiments/mingw-woarm64-build.git
クローンしたソースコードをビルドする
cd mingw-woarm64-build
./build.sh
ビルドされたコンパイラ環境(GNU Toolchain Cross-Compiler)はホームディレクトリの ~/cross-aarch64-w64-mingw32-msvcrt
以下にインストールされるので、実行ファイルがある ~/cross-aarch64-w64-mingw32-msvcrt/bin
をパスへと追加してあげれば利用することができます。
とりあえず、手動でパスPATH
に追加してみる
export PATH=~/cross-aarch64-w64-mingw32-msvcrt/bin:$PATH`
GCCを起動してバージョンを確認
aarch64-w64-mingw32-gcc --version
aarch64-w64-mingw32-gcc (GCC) 15.0.1 20250131 (experimental)
Copyright (C) 2025 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
ちなみに、ここでビルドしたGCCを使って無事にWSL-ToycをAarch64へと対応させることができました。
ちなみに、ARM64アーキテクチャの表記ってaarch64
だったり、arm64
だったり、一文字目だけ大文字のAarch64
だったり、Arm64
だったり、あるいは全部大文字のAARCH64
だったり、ARM64
だったりと統一されていないのはなんとかならないものでしょうか?