QEMU Windows - OpenNoah/OpenNoah.github.io GitHub Wiki
Cross-compiling qemu for mingw-w64
Building from debian 12 (bookworm).
Install cross-compiler
apt install mingw-w64 mingw-w64-common
Install meson build system
Meson version from debian bookworm is too old, so install newer version via pipx:
pipx install meson
# Python module 'packaging' required by glib build
# meson build picks up python executable from pipx meson install
# so install 'packaging' module into meson venv
pipx inject meson packaging
Install support packages
See instructions: https://qemu.weilnetz.de/debian
# Install repo keys
(cd /etc/apt/trusted.gpg.d && wget https://qemu.weilnetz.de/debian/weilnetz.gpg)
# Required by gettext
# Otherwise build fails with:
# cannot export iconv_ostream_create: symbol not defined
apt install mingw64-x86-64-win-iconv
# Required by qemu spice/vnc server
apt install mingw64-x86-64-pixman
# Required by qemu (lib 'intl')
#apt install mingw64-x86-64-gettext
Unfortunately some libraries from this repo is too old for supporting latest version of qemu, so build them manually:
Prepare a rootfs directory like /home/zhiyb/build/mingw/rootfs
pcre2
https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.44/pcre2-10.44.tar.bz2
export PKG_CONFIG_PATH=/home/zhiyb/build/mingw/rootfs/lib/pkgconfig
mkdir -p build
cd build
../configure --host=x86_64-w64-mingw32 --prefix=/home/zhiyb/build/mingw/rootfs
make
make install
gettext
https://ftp.gnu.org/pub/gnu/gettext/gettext-0.22.5.tar.gz
export PKG_CONFIG_PATH=/home/zhiyb/build/mingw/rootfs/lib/pkgconfig
mkdir -p build
cd build
../configure --host=x86_64-w64-mingw32 --prefix=/home/zhiyb/build/mingw/rootfs
make
make install
glib
https://gitlab.gnome.org/GNOME/glib/-/archive/2.81.0/glib-2.81.0.tar.bz2
export PKG_CONFIG_PATH=/home/zhiyb/build/mingw/rootfs/lib/pkgconfig
meson setup \
--cross-file /opt/toolchains/meson-x86_64-w64-mingw32.txt \
--prefix=/home/zhiyb/build/mingw/rootfs \
_build
meson compile -C _build
meson install -C _build
Build qemu
export PKG_CONFIG_PATH=/home/zhiyb/build/mingw/rootfs/lib/pkgconfig
export CFLAGS="-I/home/zhiyb/build/mingw/rootfs/include"
export LDFLAGS="-L/home/zhiyb/build/mingw/rootfs/lib"
mkdir -p build
cd build
../configure --target-list=mipsel-softmmu \
--cross-prefix=x86_64-w64-mingw32-
--prefix=/home/zhiyb/build/mingw/rootfs \
--disable-docs --enable-vnc \
make