您的位置:首页 > 产品设计 > UI/UE

miniGUI3.0.12移植到Hi3531

2016-03-31 18:07 381 查看
http://www.verydemo.com/demo_c167_i102620.html

之前一直在用miniGUI2.0的版本,看到现在miniGui3.0 GPL开源了,所以下载来移植到Hi3531平台上,下面阿来详细将这个移植过程记录如下:
一、[b]移植资源包:[/b]
下载miniGUI3.0.12组件
简单介绍一下各个库:
freetype:字体
qvfb2和gvfb::虚拟显存,主要用在pc机上做仿真
jpegsrc:显示jpeg图像时要用到的库
libpng:显示png图像时要用到的库
zlib:PNG压缩算法
libminigui:minigui3.0.12的核心库
minigui-res:minigui3.0.12资源文件,包括字体、图标、位图等
mg-samples:minigui3.0.12例子程序
minigui3.0.12可选组件: libmg3d(3D支持)、libmgi(提供输入接口)、libmgp(提供打印机接口的支持)、 libmgplus(2D矢量图支持和图像加速)、libmgutils(提供一些常用对话框的模板),可以根据自己的需要来使用。
在这里我只安装了freetype,zlib,,jpegsrc,,libpng, libmgplus以及res,主库,和sample。
这里提示下,下面操作的安装目录是:/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi 这里你自己选择合适的安装目录就可以了。
二、编译zlib库
编译配置脚本:

[root@localhost]CC=arm-hisiv100nptl-linux-gcc \
CXX=arm-hisiv100nptl-linux-g++ \
LD=arm-hisiv100nptl-linux-ld \
AS=arm-hisiv100nptl-linux-as \
AR=arm-hisiv100nptl-linux-ar \
./configure \
--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \
--shared
[root@localhost] make
[root@localhost] make install

三、编译png库
编译配置脚本:

[root@localhost]CC=arm-hisiv100nptl-linux-gcc \
CXX=arm-hisiv100nptl-linux-g++ \
LD=arm-hisiv100nptl-linux-ld \
AS=arm-hisiv100nptl-linux-as \
AR=arm-hisiv100nptl-linux-ar \
./configure \
--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \
--build=i386-linux \
--host=arm-hisiv100nptl-linux \
--target=arm-hisiv100nptl-linux \
[root@localhost] make
[root@localhost] make install

注意;如果编译时报错提示zlib库没有安装的,解决方法:
在编译之前(我是在configure之前),手动指定一下参数:

export CFLAGS="-I/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi/include"
export LDFLAGS="-L/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi/lib"

四、编译jpeg库
编译配置脚本:

[root@localhost]CC=arm-hisiv100nptl-linux-gcc \
CXX=arm-hisiv100nptl-linux-g++ \
LD=arm-hisiv100nptl-linux-ld \
AS=arm-hisiv100nptl-linux-as \
AR=arm-hisiv100nptl-linux-ar \
./configure \
--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \
--build=i386-linux \
--host=arm-hisiv100nptl-linux \
--target=arm-hisiv100nptl-linux \
--enable-shared \
[root@localhost] make
[root@localhost] make install

五、编译freetype库
编译配置脚本:

[root@localhost]./configure \
--host=arm-hisiv100nptl-linux \
--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \
--enable-static \

运行配置脚本后,修改:

[root@localhost] vim config.cache
# 修改如下行
ac_cv_path_LD=${ac_cv_path_LD=arm-linux-gnu-ld}
ac_cv_prog_CC=${ac_cv_prog_CC=arm-linux-gnu-gcc}
ac_cv_prog_CPP=${ac_cv_prog_CPP='arm-linux-gnu-gcc -E'}
#重新配置,再运行一次配置脚本
#修改Makefile文件,以跳过编译test目录。
# 去掉“all:”后的变量“tttest”
# 注释掉“install:”下的第二行:“cd $(FTTESTDIR); $(MAKE) –f$(MAKEFILE) install”

之后编译:

[root@localhost]make
[root@localhost]make install

六、安装minigui资源库
编译配置脚本:

[root@localhost]CC=arm-hisiv100nptl-linux-gcc \
CXX=arm-hisiv100nptl-linux-g++ \
LD=arm-hisiv100nptl-linux-ld \
AS=arm-hisiv100nptl-linux-as \
AR=arm-hisiv100nptl-linux-ar \
./configure \
--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \
[root@localhost]make
[root@localhost]make install

七、编译minigui核心库
编译配置脚本:

[root@localhost]CC=arm-hisiv100nptl-linux-gcc \
CPP=arm-hisiv100nptl-linux-cpp \
LD=arm-hisiv100nptl-linux-ld \
AR=arm-hisiv100nptl-linux-ar \
RANLIB=arm-hisiv100nptl-linux-ranlib \
STRIP=arm-hisiv100nptl-linux-strip \
LDFLAGS="-L/home/minicross/miniarm/lib_hi3531" \
CPPFLAGS="-I/home/minicross/miniarm/include_hi3531" \
./configure \
--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \
--build=x86_64-linux \
--host=arm-hisiv100nptl-linux \
--target=arm-hisiv100nptl-linux \
--disable-screensaver \
--disable-splash \
--disable-jpgsupport \
#--with-osname=linux \
#--with-targetname=fbcon \
#--enable-autoial \
#--disable-vbfsupport \

运行完配置脚本后,会出现这样的提示:
Going to generate license pictures ...
./configure: line 15530: ./runme.sh: No such file or directory
不用理会这个提示,继续往下操作。
修改:vim src/newgal/pcxvfb/Makefile 的194行,将/usr/include去掉
INCLUDES = -I$(abs_top_srcdir)/src/include -I$(abs_top_srcdir)/include \
-I$(abs_top_srcdir)/src/newgal/ -I/usr/include/
否则编译pcxvfb.c将出错
之后再编译安装:

[root@localhost]make
[root@localhost]make install

八、编译libmgplus
编译配置脚本:

CC=arm-hisiv100nptl-linux-gcc \
CPP=arm-hisiv100nptl-linux-cpp \
LD=arm-hisiv100nptl-linux-ld \
AR=arm-hisiv100nptl-linux-ar \
RANLIB=arm-hisiv100nptl-linux-ranlib \
STRIP=arm-hisiv100nptl-linux-strip \
./configure \
--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \
--build=x86_64-linux \
--host=arm-hisiv100nptl-linux \
--target=arm-hisiv100nptl-linux \

make编译时候会出现错误:
configure: WARNING: using cross tools not prefixed with host triplet
checking pkg-config is at least version0.9.0... yes
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.
Alternatively, you may set the environment variables MINIGUI_CFLAGS
and MINIGUI_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
解决方法:

export PKG_CONFIG_PATH=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi/lib/pkgconfig/

[root@localhost]make
[root@localhost]make install

九、编译minigui例子程序
编译配置脚本:

[root@localhost]CC=arm-hisiv100nptl-linux-gcc \
CPP=arm-hisiv100nptl-linux-cpp \
LD=arm-hisiv100nptl-linux-ld \
AR=arm-hisiv100nptl-linux-ar \
RANLIB=arm-hisiv100nptl-linux-ranlib \
STRIP=arm-hisiv100nptl-linux-strip \
./configure \
--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \
--build=x86_64-linux \
--host=arm-hisiv100nptl-linux \
--target=arm-hisiv100nptl-linux \

在配置阶段或遇到环境变量的问题,但是在配置了环境变量后还是出现错误,就直接在configure文件中添加了变量,这样才通过配置。修改如下:
vim configure
# 在 $as_echo_n "checking for MINIGUI... " >&6; }后添加如下变量:

MINIGUI_CFLAGS = -I/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi/include
MINIGUI_LIBS = -L/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi/lib

然后开始make,又出现如下错误:no such file: File format not recognized collect2: ld returned 1 exit status。经过网上查资料后发现是生成的Makefile有问题,需要逐个修改Makefile。修改每个Makefile中的如下行:

LDFLAGS = -lminigui_ths -ljpeg -lm -lpthread -ldl -lz –lpng
LIBS = -L/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi/lib

这样就可以编译生成可执行文件了。。。
十、修改MiniGUI.cfg
将MiniGUI.cfg的开头部分改为:

[system]
# GAL engine and default options
gal_engine=fbcon
defaultmode=800x480-16bpp (对应板子分辨率)
# IAL engine
ial_engine=console
mdev=/dev /mice
mtype=IMPS2
[fbcon]
defaultmode=800x480-16bpp

修改res资源放置的路径,在配置文件中的[cursorinfo]->cursorpath以及[resinfo]->respath
否则运行sample程序时会出错。
修改路径:

103 [cursorinfo]
104 # Edit following line to specify cursor files path
105 cursorpath=/usr/local/share/minigui/res/cursor/

131 [resinfo]
132 respath=/usr/local/share/minigui/res/

到这里就大功告成了………

上一篇 将minix3安装在bochs上下一篇 linux_2.6.30.4_Makefile_1--显示打印信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: