準備使用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的調試功能。