准备使用qemu的vexpress平台调试学习arm linux。vexpress是cortex-A9四核结构,支持vexpress平台的qemu要1.0后的版本。windows平台较新的qemu版本比较难找,准备自己下载源代码编译。本文记录环境的搭建过程与qemu的编译。
1. 安装MinGW
www.mingw.org下载mingw-get-setup.exe工具,运行,选择安装目录(如D:\MinGW)。
工具运行后会下载并运行MinGW Installation Manager,根据需要选择安装的包。
然后执行Installation->Apply changes,等待安装完成。
2,启动MinGW
为方便启动MinGW工具,新建到D:\MinGW\msys\1.0\msys.bat的快捷方式。
拷贝D:\MinGW\msys\1.0\etc目录下的fstab.sample文件为fstab,修改fstab的内容:
#Win32_Path Mount_Point
d:/mingw /mingw
点击快捷方式运行MinGW,执行命令ls /mingw:
$ ls /mingw
bin include lib libexec mingw32 msys share var
3,安装python
编译QEMU需要python工具,并且版本不能太高(3.0以下的版本)。
本文安装python-2.7.6.msi到D:\Python27\。
同时修改fstab文件增加如下内容:
d:/Python27 /python
修改etc目录下的profile文件,增加python命令的路径:
if [ $MSYSTEM == MINGW32 ]; then
export PATH=".:/usr/local/bin:/mingw/bin:/bin:/python:$PATH"
else
export PATH=".:/usr/local/bin:/bin:/mingw/bin:/python:$PATH"
fi
4,安装gtk库
编译QEMU还需要用到glib2.0的库,pkg-config与libz的库,这些东西在gtk的开发包里面都有。gtk的开发包可以在如下网址下载到:
http://www.gtk.org/download/index.php
可以单独安装需要的开发工具,本文直接下载了整个gtk开发工具包
http://www.gtk.org/download/win32.php
下载GTK+ 2.x的http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip。
解压gtk -bundle_2.24.10-20120208_win32.zip到D:\MinGW\gtk目录,配置环境变量
if [ $MSYSTEM == MINGW32 ]; then
export PATH=".:/usr/local/bin:/mingw/bin:/bin:/python:/mingw/gtk/bin:$PATH"
else
export PATH=".:/usr/local/bin:/bin:/mingw/bin:/python:/mingw/gtk/bin:$PATH"
fi
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/mingw/gtk/lib/pkgconfig"
重新启动MinGW运行:
$ pkg-config.exe --cflags --libs gtk+-2.0
-mms-bitfields -Id:/mingw/gtk/include/gtk-2.0 -Id:/mingw/gtk/lib/gtk-2.0/include
-Id:/mingw/gtk/include/atk-1.0 -Id:/mingw/gtk/include/cairo -Id:/mingw/gtk/incl
ude/gdk-pixbuf-2.0 -Id:/mingw/gtk/include/pango-1.0 -Id:/mingw/gtk/include/glib-
2.0 -Id:/mingw/gtk/lib/glib-2.0/include -Id:/mingw/gtk/include -Id:/mingw/gtk/in
clude/freetype2 -Id:/mingw/gtk/include/libpng14 -Ld:/mingw/gtk/lib -lgtk-win32-
2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.
0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0
-lglib-2.0 -lintl
5,安装SDL
下载SDL-1.2.15源代码,使用MinGW对SDL进行编译安装:
$ ./configure
$ make
$ make install
执行sdl-config命令,检查sdl是否编译正确:
$ sdl-config
Usage: sdl-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags]
[--libs] [--static-libs]
6,编译qemu
$ ./configure --prefix="d:/qemu" --target-list=arm-softmmu --disable-coroutine-pool
指定安装目录为d:\qemu,只要编译arm平台相关的工具,coroutine-pool在windows平台的qemu上有问题,禁止该选项。从./configure --help可以看到,禁止只是降低性能。因为使用qemu调试跟踪内核,性能无关紧要。
--disable-coroutine-pool disable coroutine freelist (worse performance)
--enable-coroutine-pool enable coroutine freelist (better performance)
如果出现如下错误:
ERROR: zlib check failed
Make sure to have the zlib libs and headers installed.
重新运行MinGW Installer,从All Packages里面选择msys-zlib的dev软件包安装:
然后继续执行上述的configure命令,成功之后执行:
$ make
$ make install
7,测试qemu工具
D:\qemu>qemu-system-armw.exe执行qemu,会提示缺少库文件。根据提示从MinGW的目录下搜索缺少的文件。最后需要拷贝如下的库文件到qemu的安装目录:
库文件准备好之后就可以用qemu启动内核与文件系统来测试功能了,当然也要测试qemu的调试功能。