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

Jo1*_*123 3 qemu

我设法使用以下命令在Windows 10(64位)下(基本上遵循这些说明)编译QEMU(3.0.50):

./configure --enable-gtk --enable-sdl
make
Run Code Online (Sandbox Code Playgroud)

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

Jo1*_*123 6

最终,我设法在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-bit

指南基于: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克隆git://git.qemu-project.org/qemu.git
    • cd qemu
    • git子模块更新--init ui / keycodemapdb
    • git子模块更新--init顶点
    • git子模块更新--init dtc
  • 插入void __stack_chk_fail(void); 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

  • 您可以添加--disable-capstone来配置参数,而不用注释掉顶行。评论出来对我不起作用。 (3认同)