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/
到这里就大功告成了………
之前一直在用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--显示打印信息 |
相关文章推荐
- miniUI tree 过滤(filter)的问题
- UI - Cocoa Touch框架
- SPOJ GSS1 Can you answer these queries I(区间合并)
- hdoj 3157 Crazy Circuits 【有下界最小流】
- 整体二分 hdu5412 CRB and Queries
- Mosquitto pub/sub服务实现代码浅析-主体框架
- 开源mqtt代理:mosquitto
- UI控件--Toast
- iOS给UILabel设置缩进、行距、字体颜色
- Android中的Bluetooth详解
- 更改UIsearchbar 的背景和cancel按钮(转)
- monkeyrunner进行多设备UI测试
- *** Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:], /BuildRoot/Library/C
- UISearchBar控件-让我们来搞定!(转)
- Uiautomator获取网络时间、系统时间、系统信息
- IOS UI学习教程之区分NSBundle和NSURL(读取文件、写入文件)
- UIImage imageNamed 与 imageWithContentsOfFile的差别
- IOS UI学习教程之设置UITextField各种属性
- A视图中添加一个cell,cell继承于baseCell,baseCell上面添加一个label。点击label,让A视图中的方法响应。
- activity的启动方式 requestCode和resultCode的区别