QEMUをちょっと改造したくなったので、Windowsでビルドしてみました。 今回はARMv8 AArch64用のQEMUをWindwos向けにビルドしてみます。他のアーキテクチャのビルドも手順は同じですので参考にしてください
ビルド環境の構築
ビルドにはMinGW64を使用しますので、まずはその環境を整えていきます。
MSYS2のインストール
こちらからMSYS2をダウンロードしてインストールします。
MinGW64および必要なパッケージのインストール
MSYS2をインストールしたディレクトリにあるmsys2.exeを起動し、以下のコマンドを実行します。
pacman -S base-devel mingw-w64-x86_64-toolchain pacman -S mingw-w64-x86_64-glib2 pacman -S mingw-w64-x86_64-pixman pacman -S mingw-w64-x86_64-python
これでコンパイラなど必要なものがインストールされます。
ツールのコピー
MinGWには、GNU Toolchainの別名版(x86_64-w64-mingw32-gccなど)が用意されているのですが、なぜか別名版が用意されていないものがありますので自分で用意します。
具体的には、C:\msys64\mingw64\bin 下で以下の操作を行います。
- ar.exe を x86_64-w64-mingw32-ar.exe という名前でコピー
- ranlib.exe を x86_64-w64-mingw32-ranlib.exe という名前でコピー
- windres.exe を x86_64-w64-mingw32-windres.exe という名前でコピー
- nm.exe を x86_64-w64-mingw32-nm.exe という名前でコピー
- objcopy を x86_64-w64-mingw32-objcopy という名前でコピー
QEMUのビルド
いよいよビルドです。
QEMUソースのダウンロードと展開
次にQEMUのソースをダウンロードし展開します。今回は5.1.0を使います。
wget https://download.qemu.org/qemu-5.1.0.tar.xz tar xvJf qemu-5.1.0.tar.xz
mingw64.exeの起動
まず、先ほどまで作業していたmsys2.exeを閉じ、同じディレクトリにあるmingw64.exeを実行します。mingw64.exeは64bit版MINGWにパスを通した状態で起動するmsys2.exeと思ってもらえればOKです。
ここから先は、このmingw64.exe上で作業を進めます。
configure実行
QEMUソースのトップディレクトリに入って、configureを実行します。
今回はAArch64向けのみをビルドします。全てのアーキテクチャ用にビルドしたい場合は、--target-listを指定せずにconfigureを実行してください。
./configure --cross-prefix=x86_64-w64-mingw32- --target-list=aarch64-softmmu
QEMUのバージョンによってはPhython2を必要とするものもあります。その場合は、以下のようにしてください。その場合は、もちろんPython2のインストールも必要です。
./configure --cross-prefix=x86_64-w64-mingw32- --target-list=aarch64-softmmu --python=python2
ビルド&インストール
configureが通ったら、makeしてinstallします。
make make install
インストールしたくない方は、ビルドしたファイル aarch64-softmmu/qemu-system-aarch64.exe を直接実行すればOKです。
なお、mingw64.exe以外(コマンドプロンプトなど)から実行する場合は、MinGW64のDLLにパスを通すか、DLLをexeと同じディレクトリにコピーしてから実行してください。