快乐虾
http://blog.csdn.net/lights_joy/
本文适用于
WINQEMU-0.10.2
VS2008
欢迎转载,但请保留作者信息
qemu是一个不错的开源虚拟机软件,最近刚好需要使用它,发现原来已经有人将之移植到了vs2008下,项目主页在http://sf.net/projects/winqemu/,作者的博客在http://blog.csdn.net/celestialwy。
先在项目主页下了其提供了0.10.2版本的代码,解压后直接编译,错误不少:
------ 已启动生成: 项目: WinQemu, 配置: Debug Win32 ------
正在编译...
cris-dis.c
f:/projects/winqemu v0.10.2/qemu/cris-dis.c(25) : fatal error C1083: 无法打开包括文件:“target-cris/opcode-cris.h”: No such file or directory
keymaps.c
f:/projects/winqemu v0.10.2/qemu/sdl_keysym.h(13) : fatal error C1083: 无法打开包括文件:“SDL/SDL_keysym.h”: No such file or directory
savevm.c
f:/projects/winqemu v0.10.2/qemu/savevm.c(56) : fatal error C1083: 无法打开包括文件:“../pxwc/src/pxwc.h”: No such file or directory
sdl.c
f:/projects/winqemu v0.10.2/qemu/sdl.c(40) : fatal error C1083: 无法打开包括文件:“SDL.h”: No such file or directory
vnc.c
f:/projects/winqemu v0.10.2/qemu/sdl_keysym.h(13) : fatal error C1083: 无法打开包括文件:“SDL/SDL_keysym.h”: No such file or directory
dsoundaudio.c
f:/projects/winqemu v0.10.2/qemu/audio/dsoundaudio.c(39) : fatal error C1083: 无法打开包括文件:“dsound.h”: No such file or directory
sdlaudio.c
f:/projects/winqemu v0.10.2/qemu/audio/sdlaudio.c(25) : fatal error C1083: 无法打开包括文件:“SDL.h”: No such file or directory
正在生成代码...
生成日志保存在“file://f:/projects/WinQemu v0.10.2/Debug/BuildLog.htm”
WinQemu - 7 个错误,个警告
都是包含文件的问题,估计应该是路径的问题。
第一个无法包含的是target-cris/opcode-cris.h,从cris-dis.c的文件名看这个文件应该是用于cris平台的模拟,而我只需要i386的模拟,直接从工程中移除cris-dis.c文件。
第二个无法包含的是SDL/SDL_keysym.h,这是sdl库的头文件,可以在网上下sdl-1.2.13软件包,并将它的include目录放到winqemu的头文件目录列表中,当然,这里
#include <SDL/SDL_keysym.h>
直接改为
#include <SDL_keysym.h>
修改后造成的问题是winqemu提供的sdl_keysym.h和libsdl提供的sdl_keysym.h重名,为此直接将winqemu提供的sdl_keysym.h重命名为winqemu_sdl_keysym.h。相应的在代码中查找sdl_keysym.h,将之改为winqemu_sdl_keysym.h,只有两个文件需要修改:
F:/projects/WinQemu v0.10.2/qemu/keymaps.c(37):#include "sdl_keysym.h"
F:/projects/WinQemu v0.10.2/qemu/sdl.c(122):#include "sdl_keysym.h"
经过修改,还有两个错误:
------ 已启动生成: 项目: WinQemu, 配置: Debug Win32 ------
正在编译...
savevm.c
f:/projects/winqemu v0.10.2/qemu/savevm.c(56) : fatal error C1083: 无法打开包括文件:“../pxwc/src/pxwc.h”: No such file or directory
dsoundaudio.c
f:/projects/winqemu v0.10.2/qemu/audio/dsoundaudio.c(39) : fatal error C1083: 无法打开包括文件:“dsound.h”: No such file or directory
正在生成代码...
生成日志保存在“file://f:/projects/WinQemu v0.10.2/Debug/BuildLog.htm”
WinQemu - 2 个错误,个警告
在pxwc目录下并没有src子目录,只有一个inc目录,为此将
#include "../pxwc/src/pxwc.h"
修改为:
#include "../pxwc/inc/pxwc.h"
由此引入一个新错误:
f:/projects/winqemu v0.10.2/pxwc/inc/pxwc.h(125) : error C2381: “abort”: 重定义;__declspec(noreturn) 不同
e:/program files/microsoft visual studio 9.0/vc/include/stdlib.h(373) : 参见“abort”的声明
直接将pxwc.h中abort的定义注释掉。
最后一个dsound.h则是directx的头文件,需要安装directx sdk,再将其头文件目录和lib文件目录添加进来就OK了。
从qemu原始文件中将*bios.bin之类的文件和linux-0.2.img映像文件复制到可执行文件目录下,运行:
Winqemutest –had linux-0.2.img
提示错误:
Could not load PC BIOS ‘c/program files/qemu/bios.bin’
在代码中查找c/program files/qemu/,发现有这样的定义:
F:/projects/WinQemu v0.10.2/qemu/config-host.h(2):#define CONFIG_QEMU_SHAREDIR "/c/Program Files/Qemu"
直接将这个目录改为:
#define CONFIG_QEMU_SHAREDIR "."
再编译运行,一切OK!