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

2023-12-25

我设法在Windows 10(64位)下编译QEMU(3.0.50)(基本上如下这些说明 https://wiki.qemu.org/Hosts/W32#Native_builds_with_MSYS2)使用这些命令:

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

然而,当开始时qemu-system-x86_64.exe在控制台中,什么也没有发生。我预计会出现一个窗口。启动 exe 后不久,我就收到了提示。控制台没有打印任何内容。没有缺少必要的 DLL。可能是什么问题呢?


最后我成功地在Windows 10 Home 64位下编译并运行了QEMU。 有一些陷阱:

  1. 由于 mingw 中的编译器错误(请参阅https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86832 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86832 and https://www.mail-archive.com/[电子邮件受保护]/msg557409.html https://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 家庭版 64 位

指南基于:https://wiki.qemu.org/Hosts/W32#Native_builds_with_MSYS2 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 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
  • Get QEMU sources:
    • git 克隆 git://git.qemu-project.org/qemu.git
    • cd qemu
    • 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 行)
  • Build QEMU:
    • ./configure --enable-gtk --enable-sdl --target-list=x86_64-softmmu --disable-werror --disable-stack-protector
    • make
  • 在 qemu/x86_64-softmmu 中运行 ./qemu-system-x86_64 -L ./../pc-bios
  • 可选(为了获得更好的性能):根据本指南安装 HAXM:https://www.qemu.org/2017/11/22/haxm-usage-windows/ https://www.qemu.org/2017/11/22/haxm-usage-windows/并使用选项 -accel hax 启动 QEMU
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Windows 10(64位)下为Windows 10(64位)编译QEMU 的相关文章

随机推荐

  • 在地址栏中隐藏查询参数 - VueJS

    我正在使用 Vue js 2 我正在尝试创建一个链接 将我发送到另一个页面 这就是我所拥有的 div div
  • 可以在亚马逊s3上存储json吗?

    我想将 json 文件存储到我的亚马逊 s3 然后使用 ajax 请求检索它 不幸的是 s3 似乎不允许内容类型 application json 我应该将文件保存为文本 纯文本 然后使用 php 添加标头 我已经找到问题了 我以错误的方式
  • 让 NSTimeZone 在单元测试中无故障

    因此 在 Objective C 中对日历代码进行单元测试时存在以下问题 时区包含有关夏令时的信息 因此您在夏天编写一个测试 预计 6 月 10 日的日出发生在早上 6 02 您的测试通过了 稍后 您在非 DST 时运行测试并且失败 因为当
  • Python 删除链表中的重复项

    我正在运行下面的代码以从链接列表中删除重复项 但我的代码仅在删除重复项之前打印链接列表 一旦调用removeDup方法 它就不会打印任何内容 下面是我的代码 请告诉我我错过了什么 class Node def init self data
  • 如何在 Chrome 开发工具中查找事件监听器?

    我知道将鼠标悬停在一个元素上会导致另一个元素添加一个新类 如何检查此 eventListener 在 Chrome 上的位置和内容 这Event ListenersChrome 中的选项卡仅列出文档上的一些侦听器 而不是任何特定元素 要查看
  • FXML 中的 JavaScript 脚本

    我正在尝试从 FXML 运行以下示例参考 https docs oracle com javase 8 javafx api javafx fxml doc files introduction to fxml html script bl
  • 生成随机字符串[重复]

    这个问题在这里已经有答案了 可能的重复 时间 2019 03 17 标签 c randomstringgenerator https stackoverflow com questions 1122483 c sharp random st
  • 使用 externalTrafficPolicy: Local 在 GKE 上是否可以实现无中断滚动更新?

    我有一个 GKE 集群 1 12 10 gke 17 我正在运行nginx 入口控制器 https github com kubernetes ingress nginx with type LoadBalancer 我已经设置了exter
  • 序列化多个对象

    我的序列化代码是这样的 public class slab public int lowerlimit get set public int upperlimit get set public int percentage get set
  • 在 Spark GraphX 中更新节点属性时选择什么最佳结构?

    我有一段时间在寻找一种更新 GraphX 中节点属性的方法 我正在研究一个由节点和节点属性组成的图 例如 1 2 true 在此示例中 1 是节点 ID 2 是节点的标签 true 表示节点已被访问 我已经使用 GraphLoader 加载
  • MySQL - my.cnf 中的跳过锁定有什么作用?

    我在 RHEL5 上使用 MySQL 5 0 67 并基于 my huge cnf 进行配置 我在 MySQL 手册中找不到配置文件中出现的 skip locking 行的任何内容 应该将其替换为 skip external locking
  • System.Text.Json.JsonSerializer.Serialize 返回空 Json 对象“{}”[重复]

    这个问题在这里已经有答案了 环境 Visual Studio 2019 16 3 8 NET 3 0 100 NET Core 3 0单元测试 以下对 System Text Json JsonSerializer Serialize 的所
  • 无法在 Aptana 中运行 ruby​​ hello world 应用程序 [重复]

    这个问题在这里已经有答案了 可能的重复 无法在 Aptana 中运行 ruby hello world 应用程序 https stackoverflow com questions 6889711 cant run a ruby hello
  • D3.js:显示有限数量的刻度

    我正在尝试使用d3 ticks 根据文档 https github com mbostock d3 wiki SVG Axes wiki ticks 我应该能够限制轴上显示的刻度数 然而 这似乎根本不限制刻度数 xAxis d3 svg a
  • Windows环境下开发React Native的热重载问题

    每个人 我最近正在开发 React Native 我已经成功创建了一个 Android 应用程序示例作为安装指南 https facebook github io react native docs getting started html
  • 减少存储库以聚合根

    我目前拥有数据库中几乎每个表的存储库 并且希望通过将它们减少为仅聚合根来进一步使自己与 DDD 保持一致 假设我有下表 User and Phone 每个用户可能拥有一部或多部电话 如果没有聚合根的概念 我可能会这样做 assuming I
  • 棒棒糖视图的波纹效果

    我一直在为 Lollipop API 21 开发一个应用程序 当我改变Button给某物上色 波纹效果不起作用 我找到了一些用于连锁反应的第三方库 但我想使用标准 API 来做到这一点 This answer https stackover
  • 检查用户是否经过密码验证或通过某些提供商进行验证

    我的应用程序中有简单的用户名和密码 Facebook 和 Google 身份验证 我想对密码经过身份验证的用户执行不同的操作 Code FirebaseUser user FirebaseAuth getInstance getCurren
  • Qt - Android NDK:没有这样的文件或目录

    我已经为以下问题苦苦挣扎了好几天 我有一个在桌面和自定义嵌入式设备上运行良好的项目 但是当我尝试针对 Android 进行编译时 出现以下错误 usr bin sh C android ndk r10e windows x86 64andr
  • 在Windows 10(64位)下为Windows 10(64位)编译QEMU

    我设法在Windows 10 64位 下编译QEMU 3 0 50 基本上如下这些说明 https wiki qemu org Hosts W32 Native builds with MSYS2 使用这些命令 configure enab