QEMUをWindowsでビルドする手順

QEMUをちょっと改造したくなったので、Windowsでビルドしてみました。 今回はARMv8 AArch64用のQEMUをWindwos向けにビルドしてみます。他のアーキテクチャのビルドも手順は同じですので参考にしてください

ビルド環境の構築

ビルドにはMinGW64を使用しますので、まずはその環境を整えていきます。

MSYS2のインストール

こちらからMSYS2をダウンロードしてインストールします。

sourceforge.net

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

これでコンパイラなど必要なものがインストールされます。

もしかしたら足りないパッケージもあるかも。もしビルド中にエラーが発生したら、足りないパッケージを随時インストールしてください。パッケージ名はこちらで検索できます。 Search - MSYS2 Packages

ツールのコピー

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 という名前でコピー
下の手順で --cross-prefix= を付けなければこんなことしなくてもいいのかもしれません。その場合は、他のgcc(Cygwinのgccなど)が使われることが無いように注意してください。

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
なぜかMSYS2では展開時にエラーが発生したので、展開だけはCygwinを使いました。
他のバージョンをビルドしたい場合は、こちらからソースを取得してください。 https://download.qemu.org

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と同じディレクトリにコピーしてから実行してください。