官方网站推荐用msys编译qemu源代码,但在实际过程中发现用msys来编译跟踪qemu源代码有一些不方便的地方:
1. msys本身没有gdb调试工具,需要另外下载安装。
2. msys 所带工具有限,比如目前没有集成dd工具,无法全面编译安装qemu-0.12.3.
经过几天努力,终于能在cygwin下编译成功。
首先需要zlib和SDL库,在cygwin下编译安装这两个库是要注意的是安装路径,不然qemu找不到对应的h文件而导致编译失败。通过查找在我机器上mingw安装路径在
/usr/i686-pc-mingw32
所以安装zlib过程如下:
$./configure --prefix=/usr/i686-pc-mingw32
$make
$make install
安装SDL同样如此。最后要把SDL.dll和sdl-config拷贝到cygwin的bin目录下,注意不是mingw的bin目录。
然后就可以编译安装qemu.这里以0.12.3版为例
qemu源码可放在任意位置,比如d:/qemu/qemu-0.12.3
可这样操作:
$cd d:/qemu/qemu-0.12.3
$./configure --target-list=i386-softmmu --enable-debug //后面一个参数说明我们将建立带调试信息的qemu
$make
$make install
注意在带上--enable-debug 选项时有几个地方会报-ffs未定义,暂时用vim去掉这几个地方的ffs调用,编译通过。
经测试,编译产生的qemu能正常安装reactos-0.3.10
常用技巧:
用-g -Wa,-adhls参数即可。 注意逗号,-Wa表示后面用逗号分隔的参数list是传给Assembler的参数。 就像-Wl表示后面的参数是传给Linker的参数一样。 例如:$gcc -c -g -Wa,-adhls my_function.cpp >my_function.s [不加-c的话会进行link,有时候只想查看一个文件的汇编代码,不一定要求通过链接] |