QEMUをちょっと改造したくなったので、Windowsでビルドしてみました。
今回はARMv8 AArch64用のQEMUをWindwos向けにビルドしてみます。他のアーキテクチャのビルドも手順は同じですので参考にしてください
ビルド環境の構築
ビルドにはMinGW64を使用しますので、まずはその環境を整えていきます。
MSYS2のインストール
こちらからMSYS2をダウンロードしてインストールします。
MSYS2 download | SourceForge.net
MinGW64および必要なパッケージのインストール
MSYS2をインストールしたディレクトリにあるmsys2.exeを起動し、以下のコマンドを実行します。
1 2 3 4 |
$ 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を使います。
1 2 |
$ wget https://download.qemu.org/qemu-5.1.0.tar.xz $ tar xvJf qemu-5.1.0.tar.xz |
なぜかMSYS2では展開時にエラーが発生したので、展開だけはCygwinを使いました。
他のバージョンをビルドしたい場合は、こちらからソースを取得してください。
Full list of releases
mingw64.exeの起動
まず、先ほどまで作業していたmsys2.exeを閉じ、同じディレクトリにあるmingw64.exeを実行します。mingw64.exeは64bit版MINGWにパスを通した状態で起動するmsys2.exeと思ってもらえればOKです。
ここから先は、このmingw64.exe上で作業を進めます。
configure実行
QEMUソースのトップディレクトリに入って、configureを実行します。
今回はAArch64向けのみをビルドします。全てのアーキテクチャ用にビルドしたい場合は、--target-listを指定せずにconfigureを実行してください。
1 |
$ ./configure --cross-prefix=x86_64-w64-mingw32- --target-list=aarch64-softmmu |
QEMUのバージョンによってはPhython2を必要とするものもあります。その場合は、以下のようにしてください。その場合は、もちろんPython2のインストールも必要です。
1 |
$ ./configure --cross-prefix=x86_64-w64-mingw32- --target-list=aarch64-softmmu --python=python2 |
ビルド&インストール
configureが通ったら、makeします。
1 |
$ make |
ビルドが完了したら以下のコマンドでインストールします。
1 |
$ make install |
まぁ、別にインストールしなくてもビルドしたファイル
aarch64-softmmu/qemu-system-aarch64.exe
を直接実行してもいいですが。
mingw64.exe以外(コマンドプロンプトなど)から実行する場合は、MinGW64のDLLにパスを通すか、DLLをexeと同じディレクトリにコピーしてください。