qemu开发环境配置、编译安装、问题总结
1 msys2的相关配置
1.1 下载msys2并安装
相应版本——http://www.msys2.org/,并严格按照官网说明安装。
Figure 1 官方下载及安装
Figure 2 安装后运行msys2
Figure 3 运行后的msys2界面
1.2 配置镜像文件
安装好先不要更新任何软件、库(速度极慢)。配置国内镜像:修改D:\msys64\etc\pacman.d目录下mirrorlist.mingw32、mirrorlist.mingw64、mirrorlist.msys镜像文件,修改后的mirrorlist.mingw32、mirrorlist.mingw64、mirrorlist.msys镜像文件分别如下图所示。
Figure 4 mirrorlist.mingw32文件
Figure 5 mirrorlist.mingw64文件
Figure 6 mirrorlist.msys 文件
1.3 并同步并更新msys2库
1)重启窗口msys2,并同步并更新库:pacman -Syu
2) 重启msys2并更新其他:pacman -Su
1.4 基本工具git安装
下载安装基本的工具如对window系统需要安装git pacman -S git
Figure 7
2 qemu的基本开发相关环境配置
2.1 下载配置相应的基本工具和工具链:
1) pacman -S base-devel mingw-w64-x86_64-toolchain(64位)
2) pacman -S base-devel mingw-w64-i686-toolchain (32位)
3) pacman -S base-devel mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain(64位和32位)
注意:1)、2)、3)可任意选一种,在安装工具链时一定要注意哪些包没有安好,可能需要手动添加,一般情况会自动重新下载安装,手动安装时提示已经为最新。
Figure 8 工具链未下载安装的软件系统会继续重新下载安装
2.2 下载qemu所需要的必要库,编译环境配置等:
1)pacman -S mingw-w64-x86_64-glib2 mingw64/mingw-w64-x86_64-gtk3 mingw64/mingw-w64-x86_64-SDL2(64位)
2)pacman -S mingw32/mingw-w64-i686-glib2 mingw32/mingw-w64-i686-gtk3 mingw32/mingw-w64-i686-SDL2(32位)
3)pacman -S mingw64/mingw-w64-x86_64-glib2 mingw64/mingw-w64-x86_64-gtk3 mingw64/mingw-w64-x86_64-SDL2 mingw32/mingw-w64-i686-glib2 mingw32/mingw-w64-i686-gtk3 mingw32/mingw-w64-i686-SDL2(32位和64位)
Figure 9 出现警告(这里未做处理)
Figure 10 glib2下载出现错误系统自动重装
3 下载qemu并在本地编译
3.1 下载编译qemu
去qemu官网https://www.qemu.org/download/下载有两种方法。
Figure 11
方法1:(亲测)
1) wget https://download.qemu.org/qemu-4.0.0-rc4.tar.xz#获取qemu压缩包
2) tar xvJf qemu-4.0.0-rc4.tar.xz#解压压缩包
3) cd qemu-4.0.0-rc4#进入qemu项目目录
4) cd capstone#进入capstone(反编译引擎)目录
5) make //编译capstone,生成libcapstone.a(反编译库)。
6) cd …
7) ./configure
–target-list=”sparc-softmmu ”
–prefix=D:/msys2/home/Administrator/qemu-4.0.0-rc4/install
// --target-list配置编译的架构、–prefix配置安装目录
8) config-host.mak中LIBCAPSTONE=capstone.lib修改为LIBCAPSTONE=libcapstone.a(一个反编译的库)
9) Make
方法2:
分目录即在qemu文件下新建build文件夹
1) wget https://download.qemu.org/qemu-4.0.0-rc3.tar.xz
2) tar xvJf qemu-4.0.0-rc3.tar.xz
3) mkdir build
4) cd capstone //对capstone编译
5) make
6) cd build
7) …/configure -target-list=”sparc-softmmu”–prefix=D:/qemu-4.0.0-rc4/install
8) build文件夹中生成的config-host.mak中LIBCAPSTONE=capstone.lib修改为LIBCAPSTONE=libcapstone.a(一个反编译的库),并且将qemu/capstone的libcapstone.a拷贝到Buid/capstone下。
9) make
方法3:(亲测)
- git clone git://git.qemu-project.org/qemu.git
- cd qemu
- git submodule init
- git submodule update –recursive
- ./configure --target-list=”sparc-softmmu”–prefix=D:/qemu-4.0.0-rc4/install
- make
Figure 12
3.2 编译环境验证
1)将qemu-img.exe、qemu-system-x86_64.exe文件放到D:\msys64\mingw32\bin或者D:\msys64\mingw64\bin下,在cmd中执行qemu-img.exe –help qemu-system-x86_64.exe –help均可看到帮助信息。
4 qemu的使用
下载linux-0.2.img文件放到D:\msys64\mingw32\bin 在cmd下输入qemu-system-x86_64.exe linux-0.2.img
Figure 13 linux-0.2.img
5 问题总结
问题1:在同步更新库时出现警告,分析:由于配置国内镜像之前就打开该命令框,未来的及更新,下载速度较慢,部分软件不能正确获取。
解决:关闭该终端,重新启动msys2,在终端输入pacman -Syu
Figure 14 更新库出现的警告处理
问题2:有关python的问题:安装mingw的相关文件(需要安装msys版本的python)
解决:pacman -S python
问题3:./configure时出现:erorr:“cc”either dose not exist or dose not work
Linux下的cc是gcc符号连接。
(cc是C编译器;g++是C++编译器;linux下cc一般是一个符号连接,指向gcc;gcc和g++都是GUN(组织)的编译器。而CC则一般是makefile里面的一个名字,即宏定义,因为Linux/Unix都是大小写敏感的系统,这点一定要注意。)
解决:关闭msys2命令框,打开D:\msys64下的mingw32.exe文件(已经配置好编译环境的文件)
问题4:有关无法建立符号链接,./configure不能通过,makefile文件不能生成。
解决:msys2配置 软链接 ln -s 在 windows上的配置
/etc/profile在profile文件中添加
export MSYS=“winsymlinks:lnk”
ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
问题5:如图,之前configure通过,但仍然提醒configure,make的当前目录不对。
解决:cd build
make
Figure 15
问题6:make后出现如下图错误。
解决:将make当前件夹中生成的config-host.mak的LIBCAPSTONE=capstone.lib修改为LIBCAPSTONE=libcapstone.a。并将D:\qemu-4.0.0-rc4\capstone进行编译make,生成反编译库libcapstone.a。
Figure 16
Figure 17 config-host.mask文件修改
问题7:修改cost-host.mak文件中config-host.h,make后出现makefile457错误,查看后发现subdir-dtc的问题,再查是config-host的问题。
Figure 18
解决过程:刚开始将这行注释掉,最后make通过,但是在make并没有产生qemu-system-XX.exe,编译时也出现了问题如下图
Figure 19
解决:将qemu整体搬到无中文目录的文件夹下,重新make,通过。