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

Windows下编译Qemu虚拟机的方法

编译准备:下载如下软件包MSYS-1.0.10.exe(http://prdownloads.sf.net/mingw/MSYS-1.0.10.exe?download)msysDTK-1.0.1.exe(http://prdownloads.sf.net/mingw/msysDTK-1.0.1.exe?downloa
编译准备:
下载如下软件包
MSYS-1.0.10.exe (http://prdownloads.sf.net/mingw/MSYS-1.0.10.exe?download)
msysDTK-1.0.1.exe (http://prdownloads.sf.net/mingw/msysDTK-1.0.1.exe?download)
MinGW-3.1.0-1.exe (http://prdownloads.sourceforge.net/mingw/MinGW-3.1.0-1.exe?download)
SDL-1.2.9.tar.gz (http://www.libsdl.org/release/SDL-1.2.9.tar.gz)
zlib-1.2.2.tar.gz (http://prdownloads.sourceforge.net/libpng/zlib-1.2.2.tar.gz?download)
directx-devel.tar.gz (http://www.libsdl.org/extras/win32/common)
kqemu二进制安装包 (http://fabrice.bellard.free.fr/qemu/kqemu-0.7.2.tar.gz)
也可以使用Cygwin (http://www.cygwin.com/)
(Cygwin和MinGW是用来将Linux下的软件移植到Win下使用的编译器,Cygwin更加强大,包括对Linux下API的支持还有一套提供Linux界面的工具;MinGW:Minimalist GNU for Windows顾名思义是Windows的小型GNU系统)
本文以MinGW为例(Cygwin使用方法类似,都是在unix shell下敲入相同命令)

编译步骤:
1:安装MSYS-1.0.10.exe到c:/msys,安装完毕后,会弹出系统提示框,这里输入n跳过;
2:安装msysDTK-1.0.1.exe到MSYS-1.0.10.exe的安装目录c:/msys;
3:在c:/msys下建立名为mingw的子目录,将MinGW-3.1.0-1.exe安装到c:/msys/mingw;
4:将SDL-1.2.9.tar.gz(SDL的中文介绍见http://www.libsdl.org/intro.cn/toc.html)、zlib-1.2.2.tar.gz解压到C:/msys/home/usrname/,(usrname为你的用户名),解压directx-devel.tar.gz到C:/msys/mingw
5:运行msys.bat,进入shell。
进入刚才解压的SDL源码目录cd sdl-1.2.9(一定要编译,否则QEMU没有图象输出)
依次输入:

./configure --prefix=/mingw

make

make install

6:按照上面的编译过程再编译zlib

cd zlib-1.2.2
./configure --prefix=/mingw
make
make install

这步用来编译zlib,并安装zlib头文件到正确路径

7:从CVS下载QEMU的源码
进入home目录也就是到C:/msys/home/usrname/目录cd /home/usrname
输入export CVS_RSH="ssh"
cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/qemu co qemu
回答yes建立SSH连接并且下载

官方的版本不带有kqemu加速模块(Kqemu使用的不是GPL协议,要分发必须得到作者授权),导致安装ISO时时间漫长,据称使用kqemu能够使QEMU运行效率提升5倍,所以萌生了自己编译kqemu的念头。

加速模块官方说明:This module enables QEMU to run most of the target application code directly on the host processor to achieve near native performance.
此模块能够使QEMU基于物理机处理器运行绝大部分目标应用程序代码以获得接近本地运行的效率。
这也正好说明了QEMU是真正的CPU模拟器,这个真正的CPU模拟器模拟了一个不同于物理主机的、并不存在的CPU。
我猜想加速模块可以屏蔽QEMU模拟CPU的功能,使之仅作为虚拟机(virtualizer)使用,而不是emulator

8:下载完成后,将kqemu二进制安装包 (http://fabrice.bellard.free.fr/qemu/kqemu-0.7.2.tar.gz)解压到qemu源码目录,这样编译qemu后才能支持kqemu加速模块,称之为qemu built-in with kqemu
shell进入qemu目录
输入./configure --target-list=i386-softmmu --static --enable-adlib
target-list=i386-softmmu表示只生成32位exe可执行文件,如果要生成x64的qemu exe可执行文件可以把参数--target-list=i386-softmmu去掉
接下来会看到屏幕输出如下内容

如图:可以看到QEMU能够支持kqemu了
接下来可以编译QEMU了
shell提示符下输入make,这里有可能会提示找不到texi2html和pod2man命令,texi2html和pod2man是用来编译生成帮助文档的,可以建立两个空白文件取名为texi2html、pod2man。帮助文档可以在官方网站找到。
再次make,完成之后qemu-img.exe在/home/usrname/qemu目录,qemu.exe在/home/usrname/qemu/i386-softmmu目录,这样编译生成的文件体积太大了(包括sdl.dll),运行strip命令来减小它们的体积

strip i386-softmmu/qemu
strip qemu-img.exe

9:最后将

home/usrname/qemu/i386-softmmu/qemu.exe
home/usrname/qemu/qemu-img.exe
home/usrname/qemu/pc-bios/bios.bin
home/usrname/qemu/pc-bios/ppc_rom.bin
home/usrname/qemu/pc-bios/vgabios.bin
home/usrname/qemu/pc-bios/vgabios-cirrus.bin
home/usrname/qemu/kqemu/kqemu.inf
home/usrname/qemu/kqemu/kqemu.sys
home/usrname/SDL-1.2.9/src/.libs/sdl.dll
拷贝出来
这样编译生成的qemu就是支持kqemu的了
要使QEMU使用kqemu加速模块,必须在运行qemu前,首先要安装kqemu驱动,鼠标右击kqemu.inf安装之,在命令行输入
net start kqemu启动kqemu服务
启动qemu后在控制台(CTRL+ALT+2)下输入info kqemu能够查看QEMU对kqemu的支持情况

小提示:
如果编译出错,不需要重新下载源码只需make distclean即可清除编译生成的文件。
注:本文参考了qemu官方论坛comike的文章

补充:

各个版本应该带对应的辅助文件(bios.bin,vga*.bin等),不然会出问题,比如:0.12.2版的qemu不能直接替换掉0.9.0版,启动会有问题的

0.12.2版make install 有问题,发现mingw没有dd 命令,直接把其生成的文件qemu.exe放在一起就可以了!


推荐阅读
  • Fabricetcdraft模式部署配置要求以下信息仅供参考系统环境(Centos7.5)Docker版本(19.03.12)Docker-compose版本(1.24.0)Fab ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 本文探讨了程序员这一职业的本质,认为他们是专注于问题解决的专业人士。文章深入分析了他们的日常工作状态、个人品质以及面对挑战时的态度,强调了编程不仅是一项技术活动,更是个人成长和精神修炼的过程。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • publicclassBindActionextendsActionSupport{privateStringproString;privateStringcitString; ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 本文详细介绍了C++中的构造函数,包括其定义、特点以及如何通过构造函数进行对象的初始化。此外,还探讨了转换构造函数的概念及其在不同情境下的应用,以及如何避免不必要的隐式类型转换。 ... [详细]
  • 本文详细介绍了iOS应用的生命周期,包括各个状态及其转换过程中的关键方法调用。 ... [详细]
  • importjava.io.*;importjava.util.*;publicclass五子棋游戏{staticintm1;staticintn1;staticfinalintS ... [详细]
  • 解决Visual Studio Code中PHP Intelephense误报问题
    PHP作为一种高度灵活的编程语言,其代码结构可能导致Intelephense插件在某些情况下报告不必要的错误或警告。自1.3.3版本起,Intelephense引入了多个配置选项,允许用户根据具体的工作环境和编程风格调整这些诊断信息的显示。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 本书《.NET Core 2.* 开发者指南》是面向开发者的全面学习与实践手册,涵盖了从基础到高级的各个层面。书中详细解析了 .NET Core 的核心概念,包括如何创建 .NET Core 网站,并通过视频教程直观展示操作过程。此外,还深入探讨了 Startup 类的作用、项目目录结构的组织方式以及如何在应用中使用静态文件等内容。对于希望深入了解 .NET Core 架构和开发技巧的开发者来说,本书提供了丰富的实践案例和详尽的技术指导。 ... [详细]
  • 一、Ansibleansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、che ... [详细]
  • 探索AI智能机器人自动盈利系统的构建
    用户可通过支付198元押金及30元设备维护费租赁AI智能机器人,推荐他人加入可获得相应佣金。随着推荐人数的增加,用户将逐步解锁更高版本,享受更多收益。 ... [详细]
author-avatar
uigrdg更好_154
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有