miniGUI3.0.12移植到Hi3531

转自:http://www.alaiblog.com/minigui/porting-minigui3-0-12-to-hi3531.html

之前一直在用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库

编译配置脚本:

  1. [root@localhost]CC=arm-hisiv100nptl-linux-gcc \   
  2.                 CXX=arm-hisiv100nptl-linux-g++  \   
  3.                 LD=arm-hisiv100nptl-linux-ld    \   
  4.                 AS=arm-hisiv100nptl-linux-as    \   
  5.                 AR=arm-hisiv100nptl-linux-ar    \   
  6.                 ./configure     \   
  7.                 --prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi       \   
  8.                 --shared   
  9. [root@localhost] make   
  10. [root@localhost] make install   

三、编译png库

编译配置脚本:

  1. [root@localhost]CC=arm-hisiv100nptl-linux-gcc \   
  2.                 CXX=arm-hisiv100nptl-linux-g++  \   
  3.                 LD=arm-hisiv100nptl-linux-ld    \   
  4.                 AS=arm-hisiv100nptl-linux-as    \   
  5.                 AR=arm-hisiv100nptl-linux-ar    \   
  6.                 ./configure     \   
  7.                 --prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi       \   
  8.                 --build=i386-linux      \   
  9.                 --host=arm-hisiv100nptl-linux   \   
  10.                 --target=arm-hisiv100nptl-linux \   
  11. [root@localhost] make   
  12. [root@localhost] make install   

注意;如果编译时报错提示zlib库没有安装的,解决方法:

在编译之前(我是在configure之前),手动指定一下参数:

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

四、编译jpeg库

编译配置脚本:

  1. [root@localhost]CC=arm-hisiv100nptl-linux-gcc \   
  2.                 CXX=arm-hisiv100nptl-linux-g++  \   
  3.                 LD=arm-hisiv100nptl-linux-ld    \   
  4.                 AS=arm-hisiv100nptl-linux-as    \   
  5.                 AR=arm-hisiv100nptl-linux-ar    \   
  6.                 ./configure     \   
  7.                 --prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi       \   
  8.                 --build=i386-linux      \   
  9.                 --host=arm-hisiv100nptl-linux   \   
  10.                 --target=arm-hisiv100nptl-linux \   
  11.                 --enable-shared \   
  12. [root@localhost] make   
  13. [root@localhost] make install   

 五、编译freetype库

编译配置脚本:

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

运行配置脚本后,修改:

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

之后编译:

  1. [root@localhost]make   
  2. [root@localhost]make install  

六、安装minigui资源库

编译配置脚本:

  1. [root@localhost]CC=arm-hisiv100nptl-linux-gcc \   
  2.                 CXX=arm-hisiv100nptl-linux-g++  \   
  3.                 LD=arm-hisiv100nptl-linux-ld    \   
  4.                 AS=arm-hisiv100nptl-linux-as    \   
  5.                 AR=arm-hisiv100nptl-linux-ar    \   
  6.                 ./configure     \   
  7.                 --prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi       \   
  8. [root@localhost]make   
  9. [root@localhost]make install   

七、编译minigui核心库

编译配置脚本:

  1. [root@localhost]CC=arm-hisiv100nptl-linux-gcc \   
  2.                 CPP=arm-hisiv100nptl-linux-cpp \   
  3.                 LD=arm-hisiv100nptl-linux-ld    \   
  4.                 AR=arm-hisiv100nptl-linux-ar    \   
  5.                 RANLIB=arm-hisiv100nptl-linux-ranlib    \   
  6.                 STRIP=arm-hisiv100nptl-linux-strip      \   
  7.                 LDFLAGS="-L/home/minicross/miniarm/lib_hi3531"  \   
  8.                 CPPFLAGS="-I/home/minicross/miniarm/include_hi3531"     \   
  9.                 ./configure     \   
  10.                 --prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi       \   
  11.                 --build=x86_64-linux    \   
  12.                 --host=arm-hisiv100nptl-linux   \   
  13.                 --target=arm-hisiv100nptl-linux \   
  14.                 --disable-screensaver   \   
  15.                 --disable-splash        \   
  16.                 --disable-jpgsupport    \   
  17.                 #--with-osname=linux     \   
  18.                 #--with-targetname=fbcon \   
  19.                 #--enable-autoial        \   
  20.                 #--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将出错

之后再编译安装:

  1. [root@localhost]make   
  2. [root@localhost]make install  

八、编译libmgplus

编译配置脚本:

  1. CC=arm-hisiv100nptl-linux-gcc \   
  2. CPP=arm-hisiv100nptl-linux-cpp \   
  3. LD=arm-hisiv100nptl-linux-ld    \   
  4. AR=arm-hisiv100nptl-linux-ar    \   
  5. RANLIB=arm-hisiv100nptl-linux-ranlib    \   
  6. STRIP=arm-hisiv100nptl-linux-strip      \   
  7. ./configure     \   
  8. --prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi       \   
  9. --build=x86_64-linux    \   
  10. --host=arm-hisiv100nptl-linux   \   
  11. --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.

解决方法:

  1. export PKG_CONFIG_PATH=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi/lib/pkgconfig/  
  1. [root@localhost]make   
  2. [root@localhost]make install  

九、编译minigui例子程序

编译配置脚本:

  1. [root@localhost]CC=arm-hisiv100nptl-linux-gcc \   
  2.                 CPP=arm-hisiv100nptl-linux-cpp \   
  3.                 LD=arm-hisiv100nptl-linux-ld    \   
  4.                 AR=arm-hisiv100nptl-linux-ar    \   
  5.                 RANLIB=arm-hisiv100nptl-linux-ranlib    \   
  6.                 STRIP=arm-hisiv100nptl-linux-strip      \   
  7.                 ./configure     \   
  8.                 --prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi       \   
  9.                 --build=x86_64-linux    \   
  10.                 --host=arm-hisiv100nptl-linux   \   
  11.                 --target=arm-hisiv100nptl-linux \  

在配置阶段或遇到环境变量的问题,但是在配置了环境变量后还是出现错误,就直接在configure文件中添加了变量,这样才通过配置。修改如下:

vim configure

# 在 $as_echo_n "checking for MINIGUI... " >&6; }后添加如下变量:

  1. MINIGUI_CFLAGS = -I/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi/include   
  2. 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中的如下行:

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

这样就可以编译生成可执行文件了。。。

十、修改MiniGUI.cfg

将MiniGUI.cfg的开头部分改为:

  1. [system]   
  2. # GAL engine and default options   
  3. gal_engine=fbcon  
  4. defaultmode=800x480-16bpp (对应板子分辨率)   
  5. # IAL engine   
  6. ial_engine=console  
  7. mdev=/dev /mice   
  8. mtype=IMPS2  
  9. [fbcon]   
  10. defaultmode=800x480-16bpp  

修改res资源放置的路径,在配置文件中的[cursorinfo]->cursorpath以及[resinfo]->respath

否则运行sample程序时会出错。

修改路径:

  1. 103 [cursorinfo]   
  2. 104 # Edit following line to specify cursor files path   
  3. 105  cursorpath=/usr/local/share/minigui/res/cursor/  
  1. 131 [resinfo]   
  2. 132 respath=/usr/local/share/minigui/res/  

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

你可能感兴趣的:(GUI)