Minigui3.0.12移植到nuc951上

Minigui3.0.12移植到nuc951

一環境

開發環境:fedora9

運行環境:

Nuc951evb板子,nuc951bsp(linux2.6.35.4 kernel)

u-boot引導從Nandflash啓動

編譯器:arm-linux-gcc 4.3.4(nuc951bsp中自帶)

 

二下載源文件

移植所需的文件可以從minigui官網下載:http://www.minigui.org/en/download/

 

主要文件有:

工具及依賴庫文件:

qvfb2-2.0.tar.gz

gvfb-1.0.0.tar.gz

zlib-1.2.2.tar.gz

libpng-1.2.37.tar.gz

jpegsrc.v7.tar.gz

freetype-2.3.9-fm20100818.tar.gz

 

minigui文件

libminigui-gpl-3.0.12.tar.gz

minigui-res-be-3.0.12.tar.gz

mg-samples-3.0.12.tar.gz

minigui組件文件

libmgi-2.0.4.tar.gz

libmgplus-1.2.4.tar.gz

libmg3d-1.0.2.tar.gz

libmgutils-1.0.4.tar.gz

libmgp-1.2.2.tar.gz

libmgncs-1.0.8.tar.gz

libmgeff-1.0.0.tar.gz

 

建一個目錄minigui,把上述文件都下載到該目錄下.

 

三準備目錄

 

minigui下建一個目錄arm,用於保存arm下的編譯相關文件.

 

建立安裝目錄/opt/minigui,並更改目錄權限

#mkdir  /opt/minigui

#chmod 777 /opt/minigui

#cd arm

四依賴庫文件編譯

1 libz 庫編譯

Nuc951的交叉編譯器本身含有libz庫,可以不編譯,直接使用編譯的libz庫。

 

2 安裝libjpeg

交叉編譯器本身含有jpeg庫,也可以不編譯直接使用。

如果要編譯,編譯如下:

 

# tar zxvf  ../jpegsrc.v7.tar.gz

#cd jpeg-7

# ./configure CC=arm-linux-gcc --target=arm-linux --host=arm-linux prefix=/opt/minigui

#make

#make install

 

3. 編譯安裝libpng

# tar zxvf  ../libpng-1.2.37.tar.gz

#cd libpng-1.2.37

# ./configure CC=arm-linux-gcc --target=arm-linux --host=arm-linux prefix=/opt/minigui

#make

#make install

4 編譯安裝libttf

 

# tar zxvf  ../freetype-2.3.9-fm20100818.tar.gz

# cd freetype-2.3.9-fm20100818

# ./configure CC=arm-linux-gcc --target=arm-linux --host=arm-linux prefix=/opt/minigui

#make

#make install

 

minigui編譯安裝

1 安裝資源文件minigui-res-be-3.0.12.tar.gz

# tar zxvf ../minigui-res-be-3.0.12.tar.gz

# cd minigui-res-be-3.0.12

#./configure CC=arm-linux-gcc --target=arm-linux --host=arm-linux prefix=/opt/minigui

#make install

 

2 編譯安裝libminigui

# tar zxvf  ../libminigui-gpl-3.0.12.tar.gz

#cd libminigui-gpl-3.0.12

./configure   \

 --prefix=/opt/minigui/ \

 --host=arm-linux \

 --target=arm-linux \

 --with-osname=linux \

--with-targetname=fbcon \

 --enable-autoial \

--enable-tslibial \

--disable-vbfsupport \

--disable-pcxvfb \

 CC=arm-linux-gcc \

 CFLAGS='-I/opt/minigui/include' LDFLAGS='-L/opt/minigui/lib'

 

配置時會出現如下錯誤

Going to generate license pictures ...

./configure: line 15530: ./runme.sh: No such file or directory

WARNING: failed to generate license pictures.

不用理會它,繼續。

#make

#make install

 

 

六編譯安裝minigui組件

編譯安裝libmgi

 

# tar zxvf  ../libmgi-2.0.4.tar.gz

# cd libmgi-2.0.4

./configure --prefix=/opt/minigui/ --host=arm-linux --target=arm-linux CC='arm-linux-gcc' LDFLAGS='-L/opt/minigui/lib' CPPFLAGS='-I/opt/minigui/include' MINIGUI_CFLAGS='-L/opt/minigui/lib' MINIGUI_LIBS='-ldl -lminigui_ths' LIBS='-ljpeg -lpng -lpthread -lm'

 

#make

出現如下錯誤

錯誤1

ime_pinyin.c: In function 'pinyin_predict_pord':

ime_pinyin.c:334: warning: incompatible implicit declaration of built-in function 'bzero'

ime_pinyin.c: In function 'char_match_exist':

ime_pinyin.c:430: warning: incompatible implicit declaration of built-in function 'bzero'

ime_pinyin.c: In function 'pinyin_match_keystokes':

ime_pinyin.c:534: warning: incompatible implicit declaration of built-in function 'bzero'

錯誤2

../src/.libs/libmgi.so: undefined reference to `bcmp'

 

原因:交叉編譯器已經不支持bzerobcmp了需要memsetmemcmp替換。

找到ime_pinyin.c在文件中增加

#define bzero(s,y) memset((s), 0, (y))

#define bcmp memcmp

 

再次編譯:

#make

編譯通過

然後安裝:

 

#make install

2 編譯安裝libmgplus-1.2.4.tar.gz

 

# tar zxvf  ../libmgplus-1.2.4.tar.gz

# cd libmgplus-1.2.4

# ./configure --prefix=/opt/minigui/ --host=arm-linux --target=arm-linux CC='arm-linux-gcc' LDFLAGS='-L/opt/minigui/lib' CPPFLAGS='-I/opt/minigui/include' MINIGUI_CFLAGS='-L/opt/minigui/lib' MINIGUI_LIBS='-ldl -lminigui_ths' LIBS='-ljpeg -lpng -lpthread -lm'

 

#make

#make install

 

3 編譯安裝libmg3d-1.0.2.tar.gz

 

# tar zxvf  ../libmg3d-1.0.2.tar.gz

# cd libmg3d-1.0.2

# ./configure   --prefix=/opt/minigui/ --host=arm-linux --target=arm-linux CC='arm-linux-gcc' LDFLAGS='-L/opt/minigui/lib' CPPFLAGS='-I/opt/minigui/include' MINIGUI_CFLAGS='-L/opt/minigui/lib' MINIGUI_LIBS='-ldl -lminigui_ths' LIBS='-ljpeg -lpng -lpthread -lm'

 

#make

#make install

 

4 編譯安裝libmgutils-1.0.4.tar.gz

 

# tar zxvf  ../libmgutils-1.0.4.tar.gz

# cd libmgutils-1.0.4

# ./configure --prefix=/opt/minigui/ --host=arm-linux --target=arm-linux CC='arm-linux-gcc' LDFLAGS='-L/opt/minigui/lib' CPPFLAGS='-I/opt/minigui/include' MINIGUI_CFLAGS='-L/opt/minigui/lib' MINIGUI_LIBS='-ldl -lminigui_ths' LIBS='-ljpeg -lpng -lpthread -lm'

 

#make

出現錯誤

vc.c: In function 'TextDeleteChar':

vc.c:171: warning: implicit declaration of function 'bzero'

vc.c:171: warning: incompatible implicit declaration of built-in function 'bzero'

vc.c: In function 'TextInsertChar':

vc.c:201: warning: incompatible implicit declaration of built-in function 'bzero'

vc.c: In function 'TextClearEol':

vc.c:376: warning: incompatible implicit declaration of built-in function 'bzero'

vc.c: In function 'TextClearEos':

vc.c:408: warning: incompatible implicit declaration of built-in function 'bzero'

vc.c: In function 'TextClearChars':

vc.c:468: warning: incompatible implicit declaration of built-in function 'bzero'

 

 

解決方法同上

找到vc.c文件,添加

#define bzero(s,y) memset((s), 0, (y))

 

錯誤

child.c: In function 'ChildStart':

child.c:116: warning: implicit declaration of function 'rindex'

child.c:116: warning: incompatible implicit declaration of built-in function 'rindex'

 

../../src/.libs/libmgutils.so: undefined reference to `rindex'

 

找到文件picview.cchild.c文件分別添加

 

#  define rindex(s,c) strrchr((s), (c))

 

再次編譯

#make

編譯通過

 

#make install

 

5 編譯安裝libmgp-1.2.2.tar.gz

# tar zxvf  ../libmgp-1.2.2.tar.gz

# cd libmgp-1.2.2

# ./configure --prefix=/opt/minigui/ --host=arm-linux --target=arm-linux CC='arm-linux-gcc' LDFLAGS='-L/opt/minigui/lib' CPPFLAGS='-I/opt/minigui/include' MINIGUI_CFLAGS='-L/opt/minigui/lib' MINIGUI_LIBS='-ldl -lminigui_ths' LIBS='-ljpeg -lpng -lpthread -lm'

 

 

#make

#make install

 

 

6 編譯安裝libmgncs-1.0.8.tar.gz

 

# tar zxvf  ../libmgncs-1.0.8.tar.gz

 

# cd libmgncs-1.0.8

# ./configure --prefix=/opt/minigui/ --host=arm-linux --target=arm-linux CC='arm-linux-gcc' LDFLAGS='-L/opt/minigui/lib' CPPFLAGS='-I/opt/minigui/include' MINIGUI_CFLAGS='-L/opt/minigui/lib' MINIGUI_LIBS='-ldl -lminigui_ths' LIBS='-ljpeg -lpng -lpthread -lm'

 

 

#make

#make install

 

7 編譯安裝libmgeff-1.0.0.tar.gz

 

由於是用cmake做的,暫時沒有研究。

 

七編譯sample程序

 

# tar zxvf ../mg-samples-3.0.12.tar.gz

# cd mg-samples-3.0.12

#./configure --prefix=/opt/miniguiarm/ --host=arm-linux --target=arm-linux CC='arm-linux-gcc -D_XOPEN_SOURCE' LDFLAGS='-L/opt/minigui/lib' CPPFLAGS='-I/opt/minigui/include' MINIGUI_CFLAGS='-L/opt/minigui/lib' MINIGUI_LIBS='-ldl -lminigui_ths' LIBS='-ljpeg -lpng -lpthread -lm -lts'

#make

 

八安裝miniguinuc951

 

1安裝minigui庫文件及資源文件到nuc951文件系統

壓縮編譯好的文件

假定文件系統放在rootfs下:

#mkdir opt

#mkdir opt/minigui

#cd opt/minigui

#cp –arf /opt/minigui/lib ./

#cp  -rf /opt/minigui/share ./

 

 

刪除靜態庫文件

# cd lib

#rm *.a

 

2 將庫文件路徑加入到系統庫搜索路徑

 

etc/profile文件中添加

 

export MINIGUIDIR=/opt/minigui

export LD_LIBRARY_PATH=$MINIGUIDIR/lib:$LD_LIBRARY_PATH

 

 

3. 安裝MiniGUI.cfg

 

MiniGUI.cfg

This configuration file must be installed in /etc, /usr/local/etc or your home directory.

 

我們這裏把它安裝在/etc下,複製MiniGUI.cfgrootfs/etc

 

修改MiniGUI.cfg

 

修改MiniGUI.cfg先調試GAL engine,調試完成後再調試IAL engine,修改如下:其他默認:

# GAL engine

gal_engine=fbcon //修改再這裏

# IAL engine
ial_engine=dummy   //修改再這裏

mdev=none          //修改再這裏

mtype=none         //修改再這裏

[fbcon]

defaultmode=320x240-16bpp   //修改再這裏,nuc951evb的lcd是320x240

 

[cursorinfo]

# Edit following line to specify cursor files path

cursorpath=/opt/minigui/share/minigui/res/cursor/  //修改這裏,指向cursor目錄

 

 

[resinfo]

respath=/opt/minigui/share/minigui/res/  //修改這裏,指向資源目錄

ial engine選用tslib需要修改

ial_engine=tslib                    //修改這裏,ial engine

mdev=/dev/input/event0             //修改這裏

mtype=IMPS2

 

4 複製demo程序到nuc951文件系統的usr目錄下

 

需要注意的問題是複製時demo程序的res目錄也要與程序文件一起復制併到同一個目錄下,否則會有問題。

 

5 製作文件系統,並下載到nuc951evb運行demo程序。

 

發佈了23 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章