minigui交叉編譯整理


簡介

MiniGUI 是一款面向嵌入式系統的高級窗口系統(Windowing System)和圖形用戶界面(Graphical User Interface,GUI)支持系統,由魏永明先生於 1998 年底開始開發。2002 年,魏永明先生創建北京飛漫軟件技術有限公司,為 MiniGUI 提供商業技術支持,同時也繼續提供開源版本,飛漫軟件是中國地區為開源社區貢獻代碼最多的軟件企業。最后一個采用 GPL 授權的 MiniGUI 版本是 1.6.10,從 MiniGUI 2.0.4 開始 MiniGUI 被重寫並使用商業授權,從3.0.12開始,部分版本使用GPL授權。歷經十余年時間, MiniGUI 已經成為性能優良、功能豐富的跨操作系統嵌入式圖形用戶界面支持系統,支持Linux/uClinux、eCos、 uC/OS-II、 VxWorks、ThreadX、Nucleus 、pSOS、OSE 等操作系統和數十種 SoC芯片,已驗證的硬件平台包括 ARM-based SoCs、MIPS based SoCs、IA-based SoCs、PowerPC、M68K(DragonBall /ColdFire)、Intel x86 等等。

准備工作

源碼的下載

從miniGUI官網上下載,需要有新浪賬號或者twitter賬號。下面是我下載的版本。

01	[root@localhost minigui]# ls -l *.tar.gz
02	-rwxrw-rw-. 1 root root 1427072 Jan 16 17:30 freetype-1_3_1.tar.gz
03	-rw-rw-r--. 1 root root   63582 Jan 16 17:31 gvfb-1_0_0.tar.gz
04	-rw-rw-r--. 1 root root  602762 Jan 16 17:32 qvfb2-2_0.tar.gz  
05	-rwxrw-rw-. 1 root root  557220 Feb 11 00:56 zlib-1.2.6.tar.gz
06	-rwxrw-rw-. 1 root root 1059513 Feb 11 00:55 libpng-1.5.8.tar.gz
07	-rwxrw-rw-. 1 root root  986681 Feb 10 23:42 jpegsrc.v8c.tar.gz
08	-rw-rw-r--. 1 root root  340656 Jan 16 17:33 libmg3d-1_0_2.tar.gz
09	-rw-rw-r--. 1 root root 1545209 Jan 16 17:34 libmgi-2_0_4.tar.gz
10	-rw-rw-r--. 1 root root 1116885 Jan 16 17:33 libmgp-1_2_2.tar.gz
11	-rw-rw-r--. 1 root root  648207 Jan 16 17:34 libmgplus-1_2_4.tar.gz
12	-rw-rw-r--. 1 root root  659702 Jan 16 17:33 libmgutils-1_0_4.tar.gz
13	-rw-rw-r--. 1 root root 3202804 Jan 17 00:29 libminigui-gpl-3_0_12.tar.gz
14	-rw-rw-r--. 1 root root 2608473 Jan 16 17:29 mg-samples-3_0_12.tar.gz
15	-rw-rw-r--. 1 root root 3449215 Jan 16 17:29 minigui-res-be-3_0_12.tar.gz

官網上有幾個庫的版本太低,所以需要自己去網上下載,其中jpegsrc.v8c.tar.gz、libpng-1.5.8.tar.gz和zlib-1.2.6.tar.gz都是從網上找的最近版本(png和zlib這兩個
soucefoge上都有,前面一個是網上搜的,所以不能保證鏈接長期有效,但是網上搜一下還是比較容易找到的)。其實我也是在運行例子程序的時候才發現問題的,庫更新后就可以正常運行了。

簡單介紹一下使用到的幾個庫。

freetype:FreeType庫是一個完全免費(開源)的、高質量的且可移植的字體引擎,它提供統一的接口來訪問多種字體格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持單色位圖、反走樣位圖的渲染。FreeType庫是高度模塊化的程序庫,雖然它是使用ANSI C開發,但是采用面向對象的思想,因此,FreeType的用戶可以靈活地對它進行裁剪。

gvfb與qvfb2:這兩個主要用於pc上仿真,在嵌入式平台上沒用,就不做說明。
zlib:zlib是提供數據壓縮用的函式庫,由Jean-loup Gailly與Mark Adler所開發,初版0.9版在1995年5月1日發表。zlib使用DEFLATE算法,最初是為libpng函式庫所寫的,后來普遍為許多軟件所使用。

libpng:這個是用來顯示png圖形的,MiniGUI里很多圖都是png的,如果沒有這個庫,MiniGUI將無法正常工作。

jpeg:用於顯示jpeg圖像,否則程序不能正常運行。

minigui-res:minigui3.0工具欄所使用的資源集合,包括字體、圖標、位圖等。

libminigui:minigui3.0的核心庫。

mg-samples:minigui3.0的例子程序,有一兩個小游戲,可以玩玩~~
minigui可選組件:libmg3d(3D支持)、libmgi(提供輸入接口)、libmgp(提供打印機接口的支持)、libmgplus(2D矢量圖支持和圖像加速)、libmgutils(提供一些常用對話框的模板),可以根據自己的需要使用,在跑例子程序的時候使用到了libmgplus,所以就臨時編了它的lib。
交叉編譯圖像庫

先將代碼解壓到你所放置代碼的位置,然后再進行如下步驟來編譯安裝圖像庫。我的安裝目錄是:/usr/local/minigui,可以根據自己的習慣和喜好安裝在其他目錄,通過prefix參數來配置安裝目錄。

編譯zlib庫

編譯與配置腳本:

[root@localhost] CC=arm-linux-gcc \
                 CXX=arm-linux-g++ \
                 LD=arm-linux-ld \
                 AS=arm-linux-as \
                 AR=arm-linux-ar \
                 ./configure --prefix=/usr/local/minigui \
                   --shared
#配置完成后
[root@localhost] make
[root@localhost] make install

編譯png庫

[root@localhost] CC=arm-linux-gcc \
                 CXX=arm-linux-g++ \
                 LD=arm-linux-ld \
                 AS=arm-linux-as \
                 AR=arm-linux-ar \
                ./configure --prefix=/usr/local/minigui \
                    --build=i386-linux \
                    --host=arm-linux \
                    --target=arm-linux
[root@localhost] make
[root@localhost] make install

編譯Jpeg庫

[root@localhost] CC=arm-linux-gcc \
                 CXX=arm-linux-g++ \
                 LD=arm-linux-ld \
                 AS=arm-linux-as \
                 AR=arm-linux-ar \
                 ./configure --prefix=/usr/local/minigui \
                   --build=i386-linux \
                   --host=arm-linux \
                   --target=arm-linux \
                   --enable-shared
[root@localhost] make
[root@localhost] make install 

編譯freetype庫

自動配置還有問題,也沒有嘗試高版本的freetype能不能使用,暫時就先這樣,好像例子代碼里面並沒有使用它。后面再嘗試高版本的freetype。

01	[root@localhost] cd freetype-1.3.1/
02	[root@localhost] ./configure --host=arm-linux --enable-static --prefix=/usr/local/minigui
03	[root@localhost] vim config.cache
04	# 修改如下行
05	ac_cv_path_LD=${ac_cv_path_LD=arm-linux-gnu-ld}
06	ac_cv_prog_CC=${ac_cv_prog_CC=arm-linux-gnu-gcc}
07	ac_cv_prog_CPP=${ac_cv_prog_CPP='arm-linux-gnu-gcc -E'}
08	#重新配置
09	[root@localhost] ./configure --host=arm-linux --enable-static --prefix=/usr/local/minigui
10	# 修改Makefile文件,以跳過編譯test目錄。
11	# 去掉“all:”后的變量“tttest”
12	# 注釋掉“install:”下的第二行:“cd $(FTTESTDIR); $(MAKE) –f$(MAKEFILE) install”
13	[root@localhost] make
14	[root@localhost] make install

安裝minigui資源庫

[root@localhost] CC=arm-linux-gcc \
                 CXX=arm-linux-g++ \
                 LD=arm-linux-ld \
                 AS=arm-linux-as \
                 AR=arm-linux-ar \
                  ./configure --prefix=/usr/local/minigui
[root@localhost] make
[root@localhost] make install

編譯minigui核心庫

配置腳本:

[root@localhost] CC=arm-linux-gcc \
                 CXX=arm-linux-g++ \
                 LD=arm-linux-ld \
                 CFLAGS="-I/usr/local/minigui/include -I/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/include " \
                 CPPFLAGS="-g -I/usr/local/minigui/include -I/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/include " \
                 CXXFLAGS="-g -I/usr/local/minigui/include -I/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/include " \
                   ./configure --prefix=/usr/local/minigui \
                   --host=arm-linux \
                   --target=arm-linux \
                   --build=i386-linux \
                   --with-osname=linux \
                   --with-style=classic \
                   --with-targetname=fbcon \
                   --enable-autoial \
                   --enable-rbf16 \
                   --disable-vbfsupport
[root@localhost] make
[root@localhost] make install遇到錯誤:pcxvfb.c:490:13: error: impossible constraint in ‘asm’,因為使用了錯誤的頭文件,解決方法如下:

修改Makefile:  src/newgal/pcxvfb/Makefile,把相關的地方都去掉,就兩個地方如下:
#oldincludedir = /usr/include
INCLUDES = -I$(abs_top_srcdir)/src/include -I$(abs_top_srcdir)/include \
                                    -I$(abs_top_srcdir)/src/newgal/ -I/usr/include

編譯minigui例子程序

例子程序也不是一帆風順的,從配置到最后編譯都會有問題。具體配置腳本如下:

[root@localhost] CC=arm-linux-gcc \
                 CXX=arm-linux-g++ \
                 LD=arm-linux-ld \
                 CFLAGS="-I/usr/local/minigui/include -I/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/include " \
                 CPPFLAGS="-g -I/usr/local/minigui/include -I/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/include " \
                 CXXFLAGS="-g -I/usr/local/minigui/include -I/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/include " \
                 ./configure --prefix=/usr/local/minigui \
                    --build=i386-linux \
                    --host=arm-linux \
                    --target=arm-linux

在配置階段或遇到環境變量的問題,但是在配置了環境變量后還是出現錯誤,就直接在configure文件中添加了變量,這樣才通過配置。修改如下:
出現error:

checking for MINIGUI... configure: error: Package requirements (minigui >= 3.0.10) were not met:

No package 'minigui' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

修改,添加PKG_CONFIG_PATH路徑 ,重新configure

#./configure  --prefix=/home/walkman/Downloads/minigui/source/ --build=i386-linux --host=arm-linux --target=arm-linux
 export PKG_CONFIG_PATH=/usr/local/minigui/lib/pkgconfig

修改dbuff目錄下的watch.c文件將類型修改為int類型

注釋ctrl_dlg目錄下的dlgdemo.c文件

部署圖像庫

其實這個工作很簡單,主要有兩個步驟,一個修改minigui的配置文件,另一個是拷貝庫文件到文件系統就可以了。配置文件在minigui的wiki上也有較詳細的介紹,可以參考:《MiniGUI V3.0 的運行》
修改配置文件:

view source
print?
01	$ vim /usr/local/minigui/etc/MiniGUI.cfg
02	# 修改如下參數
03	# GAL engine and default options
04	gal_engine=fbcon
05	 
06	# IAL engine
07	ial_engine=console
08	mdev=/dev/input/mice
09	mtype=IMPS2
10	 
11	# 根據實際的顯示大小填
12	[fbcon]
13	defaultmode=480x272-16bpp
拷貝庫到文件系統:
1	$ cp /usr/local/minigui/* /myrootfs/usr/local

拷貝你的例子程序就可以在開發板上運行了~~

qvfb2 的安裝(進入 qvfb2 的源碼目錄,運行如下命令):
./configure --with-qt-includes=/usr/include/qt3 --with-qt-libraries=/usr/lib/qt3

配置qvfb路徑

在/ues/local/etc/MniiGUI.cfg

#{{ifdef _MGGAL_PCXVFB
[pc_xvfb]
defaultmode=800x600-16bpp
window_caption=XVFB-for-MiniGUI-3.0-(Gtk-Version)
exec_file=/usr/local/bin/qvfb2  //qvfb路徑
#/usr/local/bin/qvfb2
#}}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM