之前一直在用miniGUI2.0的版本,看到现在miniGui3.0 GPL开源了,所以下载来移植到Hi3531平台上,下面阿来详细将这个移植过程记录如下:
一、移植资源包:
下载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/
到这里就大功告成了………