MiniGui開發:ubuntu-14.04環境移植MiniGui
開發專案在嵌入式平臺上使用MiniGui作為使用者介面開發工具,在工作之餘準備在ubuntu14.04上搭建一個測試環境,這樣程式碼測試起來比較方便。
前前後後搞了好多天,遇到了很多麻煩,但是最後還是跑通了。作為一個之前對minigui完全不懂的小白來說,真的需要好好摸索。
總結一下:minigui真的很坑!如果不是專案必須的東西,我建議讀者,能不用就不用。
問題:
- minigui官方提供的依賴庫已經是好多年前的,在移植過程中很容易出現安裝錯誤,親測!
- 據說官方貌似不再維護了。所以即使遇到bug,估計也不好解決。
搭建開發環境
系統:ubuntu-14.04.3 i686
編譯器:gcc-4.8.4, GNU Make 3.81
MiniGui資源下載:MiniGui官網
MiniGui庫版本: 3.0.12
資原始檔:
minigui-res-be-3.0.12.tar.gz
libminigui-gpl-3.0.12.tar.gz
libmgplus-1.2.4.tar.gz
mg-samples-3.0.12.tar.gz
編譯安裝MiniGui
安裝資原始檔
解壓資原始檔,進入minigui-res-be-3.0.12目錄
$ ./configure –prefix=/home/test/install/minigui/
$ make && make install
解壓資原始檔
進入libminigui-gpl-3.0.12目錄
$ ./configure –prefix=/home/test/install/minigui –enable-qvfbial=yes –enable-videoqvfb=yes
$ make
錯誤:png.c:28:17: fatal error: png.h: No such file or directory
解決:sudo apt-get install libpng12-dev
$ make install
安裝完成後檢視安裝目錄
$ ls minigui/
etc include lib share
安裝完成後,在指定目錄~/install/minigui下,生成了etc include lib share四個資料夾,分別放置了配置檔案、標頭檔案、庫檔案和資原始檔,在實際開發時,需要用到這些檔案。
安裝minigui庫和標頭檔案
解壓資原始檔,進入libmgplus-1.2.4目錄,配置:
./configure –prefix=/home/test/install/minigui PKG_CONFIG_PATH=/home/test/install/minigui/lib/pkgconfig CPPFLAGS=-I/home/test/install/minigui/include
錯誤:agg_platform_support.cpp:30:28: fatal error: minigui/common.h: No such file or directory
解決:設定minigui標頭檔案目錄,CPPFLAGS=-I/home/test/install/minigui/include
執行 $ make && make install
編譯sample檔案
解壓資原始檔,進入mg-samples-3.0.12目錄
./configure –prefix=/home/test/install/minigui PKG_CONFIG_PATH=/home/test/install/minigui/lib/pkgconfig CPPFLAGS=-I/home/test/install/minigui/include
執行make命令進行編譯。
錯誤:dlgdemo.c:40:27: fatal error: mgplus/mgplus.h: 沒有那個檔案或目錄
解決:設定libmgplus標頭檔案目錄,CPPFLAGS=-I/home/test/install/minigui/include
提示:No package ‘minigui’ found — 執行configure時增加
PKG_CONFIG_PATH=~/install/minigui/lib/pkgconfig
提示:error: minigui/common.h, 執行configure是增加
CPPFLAGS=-I~/install/minigui/include
修改配置檔案
在安裝目錄的etc目錄下生產了minigui所需的配置檔案MiniGUI.cfg,將該檔案拷貝到/etc目錄下,並修改部分配置資訊。
[system]
# GAL engine and default options
#gal_engine=pc_xvfb
gal_engine=qvfb
defaultmode=800x600-16bpp
# IAL engine
#ial_engine=pc_xvfb
ial_engine=qvfb
mdev=/dev/input/mice
mtype=IMPS2
將預設配置修改為使用qvfb模擬器,配置資原始檔目錄:
cursorpath=/home/test/install/minigui/share/minigui/res/cursor/
respath=/home/test/install/minigui/share/minigui/res/
將游標目錄和源目錄值修改為實際的安裝目錄,儲存退出。
安裝qvfb模擬器
參考:MiniGui開發:Ubuntu14.04環境安裝qvfb工具
測試
搭建測試環境,建立目錄helloworld include lib,將安裝目錄下的標頭檔案和靜態庫檔案拷貝過來。
$ tree
├── helloworld
│ ├── helloworld.c
│ ├── helloworld_res_cn.h
│ ├── helloworld_res_en.h
│ ├── helloworld_res_tw.h
│ └── Makefile
├── include
│ ├── mgplus
│ └── minigui
└── lib
├── libmgplus.a
└── libminigui_ths.a
編寫Makefile:
# Makefile for minigui test
# author hancq
# date 2016-09-30
PRO_NAME=helloworld
MINIGUI_DIR=/home/test/share/workspace/test/minigui
CFLAGS += -I.
CFLAGS += -I$(MINIGUI_DIR)/include
LDFLAGS += -lmgplus -lminigui_ths -lpthread -lm -ldl -lpng -ljpeg -L$(MINIGUI_DIR)/lib
.PHONY:all clean
all:$(PRO_NAME)
$(PRO_NAME):$(PRO_NAME).o
gcc $(CFLAGS) $(PRO_NAME).o -o [email protected] $(LDFLAGS)
%.o:%.c
gcc $(CFLAGS) -c $^ -o [email protected]
clean:
-rm -rf $(PRO_NAME) *.o
將MiniGui的sample中src目錄的helloworld相關的檔案拷貝到helloword目錄下
$ ls helloworld*
helloworld.c helloworld_res_cn.h helloworld_res_en.h helloworld_res_tw.h
執行make命令編譯生成helloworld可執行檔案,先執行在後臺把qvfb進行執行起來,在執行./helloworld,此時在模擬器中可以正常執行起來了。
測試成功。
其它錯誤:
錯誤:./helloworld: error while loading shared libraries: libminigui_ths-3.0.so.12: cannot open shared object file: No such file or directory
解決:編譯找不到庫檔案,需要在編譯選項中增加庫和庫檔案路徑
錯誤:KERNEL>InitGUI (step 4): Can not start client (Please run mginit first)!
解決:執行的是客戶端版的程序程式,需要先執行伺服器mginit。
錯誤:KERNEL>InitGUI: Count not init mouse cursor!
KERNEL>InitGUI: Init failure, please check your MiniGUI configuration or resource.
解決:找不到資源,修改MiniGui配置檔案中資原始檔目錄。