在Windows 10(64位)的Windows 10(64位)下编译QEMU

时间:2018-10-31 13:41:49

标签: qemu

我设法使用以下命令在Windows 10(64位)(基本上在these instructions之后)下编译QEMU(3.0.50):

./configure --enable-gtk --enable-sdl
make

但是,在控制台中启动qemu-system-x86_64.exe时,没有任何反应。我预计会出现一个窗口。启动exe后不久,我得到了提示。什么都没有打印到控制台。没有必要的DLL丢失。可能是什么问题?

1 个答案:

答案 0 :(得分:2)

最后,我设法在Windows 10 Home 64位下编译并运行QEMU。 有一些陷阱:

  1. 由于mingw中的编译器错误(请参见https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86832https://www.mail-archive.com/qemu-devel@nongnu.org/msg557409.html),您必须使用--disable-stack-protector配置QEMU,并且(一种解决方案)将__stack_chk_fail函数添加到源代码中文件。
  2. 使用--disable-werror配置QEMU。
  3. 从makefile中删除Capstone项目。

这里是编译qemu-system-x86_64.exe的完整分步指南:

日期:2018-10-31

操作系统:Microsoft Windows 10 Home 64位

指南基于:https://wiki.qemu.org/Hosts/W32#Native_builds_with_MSYS2

  • 下载msys2并将其安装到C:\ msys64: http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20180531.exe
  • 启动C:\ msys64 \ mingw64.exe
  • 更新(然后关闭窗口并重新启动mingw64.exe):pacman -Syu
  • 更新:pacman -Su
  • 安装基本数据包:pacman -S base-devel mingw-w64-x86_64-toolchain git python
  • 安装特定于QEMU的数据包:pacman -S mingw-w64-x86_64-glib2 mingw-w64-x86_64-gtk3 mingw-w64-x86_64-SDL2
  • 获取QEMU来源:
    • git clone git://git.qemu-project.org/qemu.git
    • cd qemu
    • git子模块更新--init ui / keycodemapdb
    • git子模块更新--init capstone
    • git子模块更新--init dtc
  • 插入 void __stack_chk_fail(void); 无效__stack_chk_fail(void) { } 到qemu \ util \ oslib-win32.c 例如在第44行
  • 在qemu \ Makefile中注释掉(#)Capstone(第508行)
  • 构建QEMU:
    • ./ configure --enable-gtk --enable-sdl --target-list = x86_64-softmmu --disable-werror --disable-stack-protector
    • 制作
  • 在qemu / x86_64-softmmu中运行 ./qemu-system-x86_64 -L ./../ pc-bios
  • 可选(以提高性能):根据以下指南安装HAXM:https://www.qemu.org/2017/11/22/haxm-usage-windows/并使用-accel hax选项启动QEMU