QEMU for Windows - Build instructions ===================================== These instructions are for cross building on a Debian host. Make sure that there is enough free disk space (about 4 GiB needed), then run these commands as root user: ------------------------------------------------------------------------------- # Get Debian Buster in chroot environment. mkdir amd64 debootstrap --arch=amd64 buster amd64/buster http://ftp.de.debian.org/debian # All other commands run in the chroot environment. chroot amd64/buster # Mount essential filesystems in chroot environment. mount proc /proc -t proc mount sys /sys -t sysfs # Add apt source for cross development libraries. apt-get install --no-install-recommends wget ca-certificates gnupg wget -O - https://qemu.weilnetz.de/debian/gpg.key | apt-key add - echo deb https://qemu.weilnetz.de/debian/ testing contrib >/etc/apt/sources.list.d/cygwin.list apt update # Install essential tools for cross building. target/s390x/gen-features.c needs gcc and libc6-dev. apt-get install --no-install-recommends gcc libc6-dev make mingw-w64 mingw-w64-tools nsis python # Optional: install tool for building documentation. apt-get install --no-install-recommends texinfo # Get source code. git clone git://repo.or.cz/qemu/ar7.git /qemu # Optional: install extra cross development library packages for 64 bit Windows.. apt-get install --no-install-recommends mingw64-x86-64-curl apt-get install --no-install-recommends mingw64-x86-64-gnutls apt-get install --no-install-recommends mingw64-x86-64-gtk3 mingw64-x86-64-libxml2 apt-get install --no-install-recommends mingw64-x86-64-ncurses mingw64-x86-64-sdl2 apt-get install --no-install-recommends mingw64-x86-64-libusb1.0 mingw64-x86-64-usbredir # Install minimum cross development library packages for 64 bit Windows. apt-get install --no-install-recommends mingw64-x86-64-glib2.0 mingw64-x86-64-pixman # Build for 64 bit Windows. mkdir -p /qemu/bin/ndebug/x86_64-w64-mingw32 cd /qemu/bin/ndebug/x86_64-w64-mingw32 && ../../../configure --cross-prefix=x86_64-w64-mingw32- --disable-guest-agent-msi --disable-werror && make # Build an installer. cd /qemu/bin/ndebug/x86_64-w64-mingw32 && make installer INSTALLER=myinstaller.exe # Optional: install extra cross development library packages for 32 bit Windows.. apt-get install --no-install-recommends mingw64-i686-curl apt-get install --no-install-recommends mingw64-i686-gnutls apt-get install --no-install-recommends mingw64-i686-gtk3 mingw64-i686-libxml2 apt-get install --no-install-recommends mingw64-i686-ncurses mingw64-i686-sdl2 apt-get install --no-install-recommends mingw64-i686-libusb1.0 mingw64-i686-usbredir # Install minimum cross development library packages for 32 bit Windows. apt-get install --no-install-recommends mingw64-i686-glib2.0 mingw64-i686-pixman # Build for 32 bit Windows. mkdir -p /qemu/bin/ndebug/i686-w64-mingw32 cd /qemu/bin/ndebug/i686-w64-mingw32 && ../../../configure --cross-prefix=i686-w64-mingw32- --disable-guest-agent-msi --disable-werror && make # Build an installer. cd /qemu/bin/ndebug/i686-w64-mingw32 && make installer INSTALLER=myinstaller.exe ------------------------------------------------------------------------------- The installer build can optionally sign your executables. This needs an additional parameter SIGNCODE=name-of-script. The executables are build with debug information (that's why they are large) which gets stripped for the installer (that's why installed files are smaller). Some magic is needed for the DLL files which have to be added to the installer. Add any needed DLL to either dll/w32 (for 32 bit) or dll/w64 (for 64 bit) in the source directory root. It is also possible to use symbolic links like in the following example: $ ls -l dll/w64 insgesamt 68 lrwxrwxrwx 1 stefan stefan 52 Apr 7 19:34 iconv.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/iconv.dll lrwxrwxrwx 1 stefan stefan 59 Apr 7 19:34 libatk-1.0-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libatk-1.0-0.dll lrwxrwxrwx 1 stefan stefan 55 Apr 7 19:34 libbz2-1.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libbz2-1.dll lrwxrwxrwx 1 stefan stefan 57 Apr 7 19:34 libcairo-2.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libcairo-2.dll lrwxrwxrwx 1 stefan stefan 65 Apr 7 19:34 libcairo-gobject-2.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libcairo-gobject-2.dll lrwxrwxrwx 1 stefan stefan 56 Apr 7 19:34 libcurl-4.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libcurl-4.dll lrwxrwxrwx 1 stefan stefan 55 Apr 7 19:34 libeay32.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libeay32.dll lrwxrwxrwx 1 stefan stefan 57 Apr 7 19:34 libepoxy-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libepoxy-0.dll lrwxrwxrwx 1 stefan stefan 57 Apr 7 19:34 libexpat-1.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libexpat-1.dll lrwxrwxrwx 1 stefan stefan 55 Apr 7 19:34 libffi-6.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libffi-6.dll lrwxrwxrwx 1 stefan stefan 62 Apr 7 19:34 libfontconfig-1.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libfontconfig-1.dll lrwxrwxrwx 1 stefan stefan 60 Apr 7 19:34 libfreetype-6.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libfreetype-6.dll lrwxrwxrwx 1 stefan stefan 60 Apr 7 19:34 libgcc_s_seh-1.dll -> /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/libgcc_s_seh-1.dll lrwxrwxrwx 1 stefan stefan 57 Apr 7 19:34 libgdk-3-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgdk-3-0.dll lrwxrwxrwx 1 stefan stefan 66 Apr 7 19:34 libgdk_pixbuf-2.0-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgdk_pixbuf-2.0-0.dll lrwxrwxrwx 1 stefan stefan 59 Apr 7 19:34 libgio-2.0-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgio-2.0-0.dll lrwxrwxrwx 1 stefan stefan 60 Apr 7 19:34 libglib-2.0-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libglib-2.0-0.dll lrwxrwxrwx 1 stefan stefan 63 Apr 7 19:34 libgmodule-2.0-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgmodule-2.0-0.dll lrwxrwxrwx 1 stefan stefan 56 Apr 7 19:34 libgmp-10.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgmp-10.dll lrwxrwxrwx 1 stefan stefan 59 Apr 7 19:34 libgnutls-30.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgnutls-30.dll lrwxrwxrwx 1 stefan stefan 63 Apr 7 19:34 libgobject-2.0-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgobject-2.0-0.dll lrwxrwxrwx 1 stefan stefan 57 Apr 7 19:34 libgtk-3-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgtk-3-0.dll lrwxrwxrwx 1 stefan stefan 60 Apr 7 19:34 libharfbuzz-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libharfbuzz-0.dll lrwxrwxrwx 1 stefan stefan 59 Apr 7 19:34 libhogweed-4.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libhogweed-4.dll lrwxrwxrwx 1 stefan stefan 56 Apr 7 19:34 libidn2-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libidn2-0.dll lrwxrwxrwx 1 stefan stefan 56 Apr 7 19:34 libintl-8.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libintl-8.dll lrwxrwxrwx 1 stefan stefan 56 Apr 7 19:34 libjpeg-8.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libjpeg-8.dll lrwxrwxrwx 1 stefan stefan 56 Apr 7 19:34 liblzo2-2.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/liblzo2-2.dll lrwxrwxrwx 1 stefan stefan 59 Apr 7 19:34 libncursesw6.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libncursesw6.dll lrwxrwxrwx 1 stefan stefan 58 Apr 7 19:34 libnettle-6.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libnettle-6.dll lrwxrwxrwx 1 stefan stefan 60 Apr 7 19:34 libnghttp2-14.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libnghttp2-14.dll lrwxrwxrwx 1 stefan stefan 59 Apr 7 19:34 libp11-kit-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libp11-kit-0.dll lrwxrwxrwx 1 stefan stefan 61 Apr 7 19:34 libpango-1.0-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libpango-1.0-0.dll lrwxrwxrwx 1 stefan stefan 66 Apr 7 19:34 libpangocairo-1.0-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libpangocairo-1.0-0.dll lrwxrwxrwx 1 stefan stefan 64 Apr 7 19:34 libpangoft2-1.0-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libpangoft2-1.0-0.dll lrwxrwxrwx 1 stefan stefan 66 Apr 7 19:34 libpangowin32-1.0-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libpangowin32-1.0-0.dll lrwxrwxrwx 1 stefan stefan 56 Apr 7 19:34 libpcre-1.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libpcre-1.dll lrwxrwxrwx 1 stefan stefan 60 Apr 7 19:34 libpixman-1-0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libpixman-1-0.dll lrwxrwxrwx 1 stefan stefan 58 Apr 7 19:34 libpng16-16.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libpng16-16.dll lrwxrwxrwx 1 stefan stefan 56 Apr 7 19:34 libssh2-1.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libssh2-1.dll lrwxrwxrwx 1 stefan stefan 57 Apr 7 19:34 libstdc++-6.dll -> /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/libstdc++-6.dll lrwxrwxrwx 1 stefan stefan 57 Apr 7 19:34 libtasn1-6.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libtasn1-6.dll lrwxrwxrwx 1 stefan stefan 61 Apr 7 19:34 libunistring-2.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libunistring-2.dll lrwxrwxrwx 1 stefan stefan 57 Apr 7 19:34 libusb-1.0.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libusb-1.0.dll lrwxrwxrwx 1 stefan stefan 66 Apr 7 19:34 libusbredirparser-1.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libusbredirparser-1.dll lrwxrwxrwx 1 stefan stefan 47 Apr 7 19:34 libwinpthread-1.dll -> /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll lrwxrwxrwx 1 stefan stefan 51 Apr 7 19:34 SDL2.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/SDL2.dll lrwxrwxrwx 1 stefan stefan 55 Apr 7 19:34 ssleay32.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/ssleay32.dll lrwxrwxrwx 1 stefan stefan 52 Apr 7 19:34 zlib1.dll -> /usr/x86_64-w64-mingw32/sys-root/mingw/bin/zlib1.dll