qemu - 在 Windows 10(64 位)下为 Windows 10(64 位)编译 QEMU

标签 qemu

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

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

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

最佳答案

最后,我设法在 Windows 10 Home 64 位下编译和运行 QEMU。
有几个陷阱:

  • 由于 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 添加到源文件。
  • 使用 --disable-werror 配置 QEMU。
  • 从 makefile 中删除 Capstone 项目。


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

    日期:2018-10-31

    操作系统:Microsoft Windows 10 家庭版 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 qem
  • git 子模块更新 --init ui/keycodemapdb
  • git 子模块更新 --init capstone
  • git 子模块更新 --init dtc
  • 插入
    无效__stack_chk_fail(无效);
    无效__stack_chk_fail(无效)
    {
    }
    到 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

    关于qemu - 在 Windows 10(64 位)下为 Windows 10(64 位)编译 QEMU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53084815/

    相关文章:

    android - 如何在 Docker 容器中运行 emulator64-arm?

    linux - 在 Qemu 上运行的 RISC-V Linux

    linux:在 qemu 中运行自编译内核:VFS:无法在未知的 wn-block(0,0) 上挂载根 fs

    emulation - 如何将 QEMU 仿真机器中的 GPIO 连接到主机中的对象?

    ld - 与 ld 链接的引导扇区有 QEMU 打印 "Hard Disk Boot Failed: not a bootable disk"

    c++ - 编译qemu-xen时signal.c出错

    linux - 同一 Guest 的两个进程的 QEMU 虚拟 CPU 之间的内存保护

    linux - 如何调试我的交叉编译的 Linux 内核?

    linux-kernel - 内核 panic : No working init found. 尝试将 init= 选项传递给内核