QEMU is an emulator for various CPUs. It works on Linux, Windows, FreeBSD and Mac OS X. Windows version is in an alpha stage. I hope I can provide useful information on development and usage of the software.
sha1sum
. Since Qemu-1.0 the build is done with the MinGW compiler, Cygwin is still used for the shell and other tools (MSYS is not required)
The main difference is now that the build is done since Qemu-1.2.1 with MinGW by using the latest version of gcc.
Note that with latest version of cygwin, gcc4-core gcc4-core-4.7.3 and gcc4-g++-4.7.3 are available, maybe this can be compiled again with 'pure' Cygwin
You need the following packages (downloadable with the MinGW installer program) :
[Show/Hide]
http://prdownloads.sourceforge.net/mingw/mingw-get-0.5-mingw32-beta-20120426-1-bin.tar.xz?download
http://prdownloads.sourceforge.net/mingw/binutils-2.24.1-1-mingw32-bin.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/gcc-4.7.2-1-mingw32-doc.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/gcc-4.7.2-1-mingw32-lang.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/gcc-4.7.2-1-mingw32-lic.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/gcc-c++-4.7.2-1-mingw32-bin.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/gcc-core-4.7.2-1-mingw32-bin.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/gdb-7.5-1-mingw32-bin.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/libexpat-2.0.1-1-mingw32-dll-1.tar.gz?download
http://prdownloads.sourceforge.net/mingw/libgcc-4.7.2-1-mingw32-dll-1.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/libgmp-5.0.1-1-mingw32-dll-10.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/libgomp-4.7.2-1-mingw32-dll-1.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/libiconv-1.14-2-mingw32-dev.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/libiconv-1.14-2-mingw32-dll-2.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/libintl-0.18.1.1-2-mingw32-dll-8.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/libmpc-0.8.1-1-mingw32-dll-2.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/libpthreadgc-2.9.0-mingw32-pre-20110507-2-dll-2.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/libquadmath-4.7.2-1-mingw32-dll-0.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/libssp-4.7.2-1-mingw32-dll-0.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/libstdc++-4.7.2-1-mingw32-dll-6.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/make-3.82.90-2-mingw32-cvs-20120902-bin.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/mingw-get-0.5-mingw32-beta-20120426-1-bin.tar.xz?download
http://prdownloads.sourceforge.net/mingw/mingw-get-0.5-mingw32-beta-20120426-1-lic.tar.xz?download
http://prdownloads.sourceforge.net/mingw/mingwrt-3.20-2-mingw32-dev.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/mingwrt-3.20-2-mingw32-dll.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/pkginfo-0.5-mingw32-beta-20120426-1-bin.tar.xz?download
http://prdownloads.sourceforge.net/mingw/pthreads-w32-2.9.0-mingw32-pre-20110507-2-dev.tar.lzma?download
http://prdownloads.sourceforge.net/mingw/w32api-3.17-2-mingw32-dev.tar.lzma?download
GLIB for MinGW:
Fetched new GTK+ Bundle for mingw
You need the following package http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip
Warning: do not forget to correct the values of prefix=
in the provided lib/pkgconfig/*.pc
files!
See gtk+-bundle_win32.README
ZLIB for MinGW:
You need the following packages
http://sourceforge.net/projects/mingw/files/MinGW/Extension/zlib/zlib-1.2.7-1/libz-1.2.7-1-mingw32-dll-1.tar.lzma/download and
http://sourceforge.net/projects/mingw/files/MinGW/Extension/zlib/zlib-1.2.7-1/libz-1.2.7-1-mingw32-dev.tar.lzma/download
Note: everything is installed for me in C:\MinGW
. Those tar files can be extracted with the -lzma
option of cygwin's tar if needed, as the cygwin's shell is still used by me (and not the MSYS version).
SDL for MinGW:
Fetch my version of
SDL-1.2.15 because there is a small bug in the versioning of the DLL file.
Source code is here: SDL-devel-1.2.15-mingw32.tar.gz.
Note: my patch is here: SDL-1.2.15-patch.
DirectX:
Fetched http://sourceforge.net/projects/mingwdx/files/latest/download?source=files
and files from http://www.filehat.com/folders.php?fid=134
PIXMAN for MinGW:
Fetch my version of the
pixman library for MinGW pixman-0.32.6-mingw32.tar.bz2.
Source code is here: http://cairographics.org/releases/
(or here: pixman-0.32.6.tar.gz)
Note: my porting notes are here: pixman-0.32.6-mingw32-README.txt.
libfdt for MinGW :
Optionally fetch my version of the
libfdt library for MinGW libfdt-1.3.0-EL-1-mingw32.tar.bz2.
Source code is here: http://jdl.com/software/dtc-v1.3.0.tgz
(or here: dtc-v1.3.0.tgz)
Note: my porting notes are here: libfdt-1.3.0-EL-1-mingw32-README.txt.
Qemu:
export PATH=/cygdrive/c/MinGW/bin:$HOME/bin:/usr/local/bin:/usr/bin:/bin cd $HOME/bin ln -s /cygdrive/c/MinGW/bin/dlltool.exe i586-mingw32-dlltool ln -s /cygdrive/c/MinGW/bin/ld.exe i586-mingw32-ld ln -s /cygdrive/c/MinGW/bin/windres.exe i586-mingw32-windres ln -s /usr/bin/pkg-config.exe i586-mingw32-pkg-config ln -s ar-wrapper.h i586-mingw32-ar ln -s gcc-wrapper.sh i586-mingw32-gcc
#!/bin/bash # ############################################################################## # (c) Eric Lassauge - January 2012 # <lassauge {AT} users {DOT} sourceforge {DOT} net > # # ############################################################################## # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/> # ############################################################################## # Complete script for MinGW gcc wrapper from cygwin: change POSIX path to windows path # Needs: cygpath #Configure to where you installed MinGW mingwbase=/cygdrive/c/MinGW mingwroot=`cygpath -w ${mingwbase}` dollarstar="" # Parse the gcc flags to change all file pathes while [ $# -ne 0 ]; do case "$1" in -o) param=`cygpath -w $2` dollarstar="${dollarstar} -o ${param}" shift ;; -I) param=`cygpath -w $2` dollarstar="${dollarstar} -I ${param}" shift ;; -I*) parami=`echo $1 | sed -e 's/-I//'` first=`echo ${parami} | sed -e 's/^\(.\).*/\1/'` case $first in '/' | '.') param=`cygpath -w ${parami}` dollarstar="${dollarstar} -I${param}" ;; *) dollarstar="${dollarstar} ${1}" ;; esac ;; -B) param=`cygpath -w $2` dollarstar="${dollarstar} -B ${param}" shift ;; -L) param=`cygpath -w $2` dollarstar="${dollarstar} -L ${param}" shift ;; -L*) paraml=`echo $1 | sed -e 's/-L//'` first=`echo ${paraml} | sed -e 's/^\(.\).*/\1/'` case $first in '/' | '.') param=`cygpath -w ${paraml}` dollarstar="${dollarstar} -L${param}" ;; *) dollarstar="${dollarstar} ${1}" ;; esac ;; *) if [ -f "$1" ] then param=`cygpath -w $1` dollarstar="${dollarstar} ${param}" else dollarstar="${dollarstar} $1" fi ;; esac shift done # remove spurious ^M dollarstar=`echo "${dollarstar}" | sed -e 's/^M//g'` # echo "# Calling MinGW compiler: gcc ${dollarstar}" # Add the path to mingw tools export PATH=${mingwbase}/bin:$PATH ${mingwbase}/bin/gcc -Wl,-mi386pe --sysroot="${mingwroot}" ${dollarstar}
#!/bin/bash # ############################################################################## # (c) Eric Lassauge - December 2012 # <lassauge {AT} users {DOT} sourceforge {DOT} net > # # ############################################################################## # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/> # ############################################################################## # Complete script for MinGW ar wrapper from cygwin: change POSIX path to windows path # Needs: cygpath #Configure to where you installed MinGW mingwbase=/cygdrive/c/MinGW mingwroot=`cygpath -w ${mingwbase}` dollarstar="" # Parse the gcc flags to change all file pathes while [ $# -ne 0 ]; do case "$1" in *) if [ -f "$1" ] then param=`cygpath -w $1` dollarstar="${dollarstar} ${param}" else dollarstar="${dollarstar} $1" fi ;; esac shift done # remove spurious ^M dollarstar=`echo "${dollarstar}" | sed -e 's/ //g'` # echo "# Calling MinGW compiler: gcc ${dollarstar}" # Add the path to mingw tools export PATH=${mingwbase}/bin:$PATH ${mingwbase}/bin/ar ${dollarstar}
export PKG_CONFIG_PATH=/cygdrive/c/MinGW/lib/pkgconfig ./configure --target-list="i386-softmmu arm-softmmu sparc-softmmu ppc-softmmu x86_64-softmmu mipsel-softmmu" \ --cc=i586-mingw32-gcc --host-cc=/usr/bin/gcc --cxx=i586-mingw32-g++ \ --audio-drv-list="winwave dsound sdl fmod" \ --prefix=/home/lassauge/MyDocuments/Qemu-windows \ --with-confsuffix=/Bios \ --docdir=/home/lassauge/MyDocuments/Qemu-windows/Doc \ --fmod-lib=/home/lassauge/Qemu/fmodapi375win/api/lib/libfmod.a \ --fmod-inc=/home/lassauge/Qemu/fmodapi375win/api/inc \ --disable-libusb --enable-gtk --with-gtkabi=3.0 \ --disable-guest-agent \ --disable-werror \ --enable-gtk \ --disable-strip $*
config-host.mak
and config-target.mak
because some spurious ^M might be in! (you can use this script to ease your pain: clean-config.sh).make QEMU_DGFLAGS=" "
C:\MinGW\lib
in my case):fmod.dll intl.dll libstdc++-6.dll libgcc_s_dw2-1.dll libglib-2.0-0.dll libgthread-2.0-0.dll libssp-0.dll SDL.dll libz-1.dll zlib1.dll libintl-8.dll pthreadGC2.dll libpng15-15.dll libjpeg-9.dll libcairo-2.dll libfontconfig-1.dll libexpat-1.dll libpixman-1-0.dll libfreetype-6.dll libgdk-win32-2.0-0.dll libgdk_pixbuf-2.0-0.dll gdiplus.dll libpango-1.0-0.dll libpangocairo-1.0-0.dll libpangoft2-1.0-0.dll libpangowin32-1.0-0.dll libglib-2.0-0.dll libgmodule-2.0-0.dll libgobject-2.0-0.dll libgtk-win32-2.0-0.dll libatk-1.0-0.dll libgio-2.0-0.dll libxml2-2.dll libiconv-2.dll liblzma-5.dll libffi-6.dll
This program is provided as is and without any warranty.