1. 程式人生 > >MiniGui開發:ubuntu-14.04環境移植MiniGui

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

1

編譯安裝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配置檔案中資原始檔目錄。