热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

在Windows系统下编译安装Qemu虚拟机

一、准备MinGW环境在www.mingw.org下载:MSys(当前版本是1.0.11)MSysDTK(当前版本是1.0.1)MinGW(当前版本是5.1.6)mingw版本的zlib开发包(当前版本的文件名是libz-1.2.3-1-mingw32-dev.tar.gz)和运行时的dll文件(当前版本的文件名是li
  一、准备MinGW环境
在www.mingw.org下载:
MSys(当前版本是1.0.11)
MSys DTK (当前版本是1.0.1)
MinGW(当前版本是5.1.6)
mingw版本的zlib开发包(当前版本的文件名是libz-1.2.3-1-mingw32-dev.tar.gz)和运行时的dll文件(当前版本的文件名是libz-1.2.3-1-mingw32-dll-1.tar.gz)

依次运行MSys、MSys DTK、MinGW安装程序,按提示信息操作。安装后,在MSys安装目录下的etc目录中创建fstab文件,把MinGW与MSys关联起来。fstab文件的内容很简单,可参考etc目录下的样例文件。然后,MSys的命令行界面,执行下面的命令安装zlib开发包
tar -C /mingw -xf /c/wyk/libz-1.2.3-1-mingw32-dev.tar.gz
这里假定zlib开发包的下载目录是c:\\wyk。

二、安装SDL开发包
在www.libsdl.org下载SDL开发包,当前版本是1.2.14,选择Win32平台,文件名是sdl-devel-1.2.14-mingw32.tar.gz
在MSys的命令行界面,执行下面的命令安装
tar -C /mingw -xf /c/wyk/sdl-devel-1.2.14-mingw32.tar.gz
这里假定SDL开发包的下载目录是c:\\wyk。
然后修改 /mingw/SDL-1.2.14/bin目录下的sdl-config脚本文件,将prefix 变量的定义改为 /mingw/SDL-1.2.14

三、编译QEMU
在www.nongnu.org/qemu/download.html下载QEMU源码包,当前的稳定版本是0.10.6
在MSys的命令行界面下解开源码包,进入源码目录,先执行
PATH=$PATH:/mingw/SDL-1.2.14/bin
将SDL开发包路径补充进来。然后,执行
./configure --prefix=/c/qemu/0.10.6
配置QEMU。其中的 --prefix 参数指定编译后安装QEMU的目录。

make
命令进行编译。最后再执行
make install
命令安装编译好的QEMU程序。

按前面的配置命令,QEMU程序会安装在c:\\qemu\\0.10.6目录下。在此目录下,还需要拷贝SDL和zlib 的dll文件,QEMU才能正常运行。SDL的dll文件名是SDL.DLL,位于/mingw/SDL-1.2.14/bin目录下;zlib的dll文件名libz-1.dll,在前面下载的libz-1.2.3-1-mingw32-dll-1.tar.gz压缩包内。 运行QEMU程序时,可能会输出错误信息:无法加载PC BIOS(bios.bin文件),这是因为编译安装路径设置在windows系统下与linux系统的有差异造成的,只要用QEMU的 -L 参数指定bios的加载路径(即QEMU.EXE程序所在的目录下)就可以解决。

四、kqemu加速模块
在MinGW环境下无法编译kqemu,但可以直接从www.nongnu.org/qemu/download.html下载kqemu源码包(当前版本是kqemu-1.4.0pre1.tar.gz),里面包含已编译好的windows环境的kqemu模块。
在c:\\qemu目录下创建kqemu目录,将kqemu源码包中的kqemu.inf 和 kqemu.sys 文件解压到kqemu目录中。然后在kqemu.inf文件上点击鼠标右键,在弹出菜单中选择“安装”来安装kqemu模块。安装完成后,用
net start kqemu
命令,可以启动kqemu,供QEMU使用。

注意:经实际验证,kqemu-1.4.0pre1.tar.gz中包含的kqemu.sys在0.10.6版本的QEMU使用时,会使QEMU异常退出,所以运行QEMU时,要加 -no-kqemu 参数,避免使用kqemu模块。


推荐阅读
  • 本文探讨了程序员这一职业的本质,认为他们是专注于问题解决的专业人士。文章深入分析了他们的日常工作状态、个人品质以及面对挑战时的态度,强调了编程不仅是一项技术活动,更是个人成长和精神修炼的过程。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • publicclassBindActionextendsActionSupport{privateStringproString;privateStringcitString; ... [详细]
  • 本文详细介绍了C++中的构造函数,包括其定义、特点以及如何通过构造函数进行对象的初始化。此外,还探讨了转换构造函数的概念及其在不同情境下的应用,以及如何避免不必要的隐式类型转换。 ... [详细]
  • 本文详细介绍了iOS应用的生命周期,包括各个状态及其转换过程中的关键方法调用。 ... [详细]
  • importjava.io.*;importjava.util.*;publicclass五子棋游戏{staticintm1;staticintn1;staticfinalintS ... [详细]
  • 解决Visual Studio Code中PHP Intelephense误报问题
    PHP作为一种高度灵活的编程语言,其代码结构可能导致Intelephense插件在某些情况下报告不必要的错误或警告。自1.3.3版本起,Intelephense引入了多个配置选项,允许用户根据具体的工作环境和编程风格调整这些诊断信息的显示。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 本文介绍了一种方法,通过使用Python的ctypes库来调用C++代码。具体实例为实现一个简单的加法器,并详细说明了从编写C++代码到编译及最终在Python中调用的全过程。 ... [详细]
  • 本文介绍如何使用JavaScript中的for循环来创建一个九九乘法表,适合初学者学习循环结构的应用。 ... [详细]
  • 本文将详细介绍如何在二进制和十六进制之间进行准确的转换,并提供实际的代码示例来帮助理解这一过程。 ... [详细]
  • 高级缩放示例.就像谷歌地图一样.它仅缩放图块,但不缩放整个图像.因此,缩放的瓷砖占据了恒定的记忆,并且不会为大型缩放图像调整大小的图像.对于简化的缩放示例lookhere.在Win ... [详细]
  • empty,isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!检测一个变量是否是null ... [详细]
author-avatar
有些疯癫的小红帽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有