一、移植资源包介绍:

作者:gavinpong,相关源码可以在github仓库下载到,欢迎fork 与 交流:https://github.com/GavinPong

所有组件都可以在minigui官网上下载到:http://www.minigui.com/zhcn/download/

下载miniGUI3.2.0组件

简单介绍一下各个库:

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。

二、移植编译zlib库:

1、解压zlib-1.2.2.tar.gz;

2、使用configure脚本重新指定Makefile的编译参数:

a、生成动态库指令(会生成对应平台下的Makefile):

CC=arm-hisiv300-linux-gcc CXX=arm-hisiv300-linux-g++ LD=arm-hisiv300-linux-ld AS=arm-hisiv300-linux-as AR=arm-hisiv300-linux-ar ./configure --prefix=/home/share_disk/workspace/thirdlib/zlib --share

b、然后直接 make && make install就能生成新的zlib库

a、生成静态库指令(会生成对应平台下的Makefile):

CC=arm-hisiv300-linux-gcc CXX=arm-hisiv300-linux-g++ LD=arm-hisiv300-linux-ld AS=arm-hisiv300-linux-as AR=arm-hisiv300-linux-ar ./configure --prefix=/home/share_disk/workspace/thirdlib/zlib

b、直行Make会报如下错:

arm-hisiv300-linux-ar:无效选项

Usage: arm-hisiv300-linux-ar [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...

arm-hisiv300-linux-ar -M [<mri-脚本]

c、修改Makefile中的如下指令:

在$(AR)后面加上参数 rv即可:

----------------------------------------------------------------------------------------------------------------------------

修改前

libz.a: $(OBJS) $(OBJA)

$(AR) $@ $(OBJS) $(OBJA)

-@ ($(RANLIB) $@ || true) >/dev/null 2>&1

----------------------------------------------------------------------------------------------------------------------------

修改后

libz.a: $(OBJS) $(OBJA)

$(AR) rv $@ $(OBJS) $(OBJA)

-@ ($(RANLIB) $@ || true) >/dev/null 2>&1

三、移植编译libpng:

1、解压libpng-1.2.37.tar.gz

2、使用configure脚本重新指定Makefile的编译参数:

a、生成动态库指令(会生成对应平台下的Makefile):

CC=arm-hisiv300-linux-gcc CXX=arm-hisiv300-linux-g++ LD=arm-hisiv300-linux-ld AS=arm-hisiv300-linux-as AR=arm-hisiv300-linux-ar ./configure --prefix=/home/share_disk/workspace/thirdlib/zlib --enable-shared

b、然后直接 make && make install就能生成新的libpng库

a、生成动态库指令(会生成对应平台下的Makefile):

CC=arm-hisiv300-linux-gcc CXX=arm-hisiv300-linux-g++ LD=arm-hisiv300-linux-ld AS=arm-hisiv300-linux-as AR=arm-hisiv300-linux-ar ./configure --prefix=/home/share_disk/workspace/thirdlib --build=i386-linux --host=arm-hisiv300-linux --target=arm-hisiv300-linux --enable-shared

a、生成静态库指令(会生成对应平台下的Makefile):

CC=arm-hisiv300-linux-gcc CXX=arm-hisiv300-linux-g++ LD=arm-hisiv300-linux-ld AS=arm-hisiv300-linux-as AR=arm-hisiv300-linux-ar ./configure --prefix=/home/share_disk/workspace/thirdlib/MiniGui3.012/libpng --build=i386-linux --host=arm-hisiv300-linux --target=arm-hisiv300-linux

b、生成Makefile时提示zlib库没有安装:

|--configure: error: zlib not installed

|--解决办法:将上一步安装的zlib库路径设置到环境变量中即可

export CFLAGS="-I/home/share_disk/workspace/thirdlib/MiniGUI3.0.12/zlib/include"

export LDFLAGS="-L/home/share_disk/workspace/thirdlib/MiniGUI3.0.12/zlib/lib"

c、执行make指令报版本不匹配错误:

|--/bin/ld:libpng.vers:2: syntax error in VERSION script

|--解决办法:打开Makefile,将48行的这个编译选项用#屏蔽掉去掉:

48 am__append_1 = #-Wl,--version-script=libpng.vers

d、再次执行Make && make install完成编译和安装

四、移植jpeg:

1、解压jpegsrc.v7.tar.gz

2、使用configure脚本重新指定Makefile的编译参数:

a、生成动态库指令(会生成对应平台下的Makefile):

CC=arm-hisiv300-linux-gcc CXX=arm-hisiv300-linux-g++ LD=arm-hisiv300-linux-ld AS=arm-hisiv300-linux-as ./configure --prefix=/home/share_disk/workspace/thirdlib/jpeg --build=i386-linux --host=arm-hisiv300-linux -target=arm-hisiv300-linux --enable-shared

b、然后直接 make && make install就能生成新的zlib库;

c、生成静态库指令(会生成对应平台下的Makefile):

CC=arm-hisiv300-linux-gcc CXX=arm-hisiv300-linux-g++ LD=arm-hisiv300-linux-ld AS=arm-hisiv300-linux-as ./configure --prefix=/home/share_disk/workspace/thirdlib/jpeg --build=i386-linux --host=arm-hisiv300-linux -target=arm-hisiv300-linux

d、然后直接 make && make install就能生成新的jpeg库;

五、编译freetype库:

1、解压freetype-2.3.9-fm20100818.tar.gz

2、使用configure脚本重新指定Makefile的编译参数:

|--a、生成动态库指令(会生成对应平台下的Makefile):

CC=arm-hisiv300-linux-gcc CXX=arm-hisiv300-linux-g++ LD=arm-hisiv300-linux-ld AS=arm-hisiv300-linux-as ./configure --host=arm-hisiv300-linux --prefix=/home/share_disk/workspace/thirdlib/freetype

|-b、生成静态库指令(会生成对应平台下的Makefile):

CC=arm-hisiv300-linux-gcc CXX=arm-hisiv300-linux-g++ LD=arm-hisiv300-linux-ld AS=arm-hisiv300-linux-as ./configure --host=arm-hisiv300-linux --prefix=/home/share_disk/workspace/thirdlib/freetype --enable-static

|--c、然后直接 make && make install就能生成新的freetype库;

六、安装minigui资源库:

1、解压minigui-res-3.2.0.tar.gz

2、使用configure脚本重新指定Makefile的编译参数:

CC=hisiv300-linux-gcc CXX=hisiv300-linux-g++ LD=hisiv300-linux-ld AS=hisiv300-linux-as AR=hisiv300-linux-ar ./configure --prefix=/home/share_disk/workspace/thirdlib/minigui-res

七、编译minigui核心库:

1、解压libminigui-3.2.0.tar.gz

2、使用configure脚本重新指定Makefile的编译参数:

|--a、生成动态库指令(会生成对应平台下的Makefile):

CC=arm-hisiv300-linux-gcc CPP=arm-hisiv300-linux-cpp LD=arm-hisiv300-linux-ld AR=arm-hisiv300-linux-ar RANLIB=arm-hisiv300-linux-ranlib STRIP=arm-hisiv300-linux-strip ./configure --prefix=/home/share_disk/workspace/thirdlib/minigui-core --build=i386-linux --host=arm-hisiv300-linux --target=arm-hisiv300-linux --disable-screensaver --disable-splash --disable-jpgsupport --enable-shared

#--with-osname=linux \

#--with-targetname=fbcon \

#--enable-autoial \

#--disable-vbfsupport \

|--b、生成静态库指令(会生成对应平台下的Makefile):

CC=arm-hisiv300-linux-gcc CPP=arm-hisiv300-linux-cpp LD=arm-hisiv300-linux-ld AR=arm-hisiv300-linux-ar RANLIB=arm-hisiv300-linux-ranlib STRIP=arm-hisiv300-linux-strip ./configure --prefix=/home/share_disk/workspace/thirdlib/minigui-core --build=i386-linux --host=arm-hisiv300-linux --target=arm-hisiv300-linux --disable-screensaver --disable-splash --disable-jpgsupport --enable-static

#--with-osname=linux \

#--with-targetname=fbcon \

#--enable-autoial \

#--disable-vbfsupport \

|--c、然后直接 make && make install就能生成新的libminigui库;

编译时会报如下错误:

make[4]: 正在进入目录 `/home/share_disk/sdk/minigui-3531a/libminigui-3.2.0/src/newgal/pcxvfb'

/bin/bash ../../../libtool --mode=compile arm-hisiv300-linux-gcc -DHAVE_CONFIG_H -I. -I../../.. -I/home/share_disk/sdk/minigui-3531a/libminigui-3.2.0/src/include -I/home/share_disk/sdk/minigui-3531a/libminigui-3.2.0/include -I/home/share_disk/sdk/minigui-3531a/libminigui-3.2.0/src/newgal/ -I/usr/include/ -DNDEBUG -I/home/share_disk/workspace/thirdlib/zlib/include -D_WITH_TARGET_NONE -D__MINIGUI_LIB__ -D_GNU_SOURCE -O2 -Wstrict-prototypes -pipe -MT pcxvfb.lo -MD -MP -MF .deps/pcxvfb.Tpo -c -o pcxvfb.lo pcxvfb.c

mkdir .libs

arm-hisiv300-linux-gcc -DHAVE_CONFIG_H -I. -I../../.. -I/home/share_disk/sdk/minigui-3531a/libminigui-3.2.0/src/include -I/home/share_disk/sdk/minigui-3531a/libminigui-3.2.0/include -I/home/share_disk/sdk/minigui-3531a/libminigui-3.2.0/src/newgal/ -I/usr/include/ -DNDEBUG -I/home/share_disk/workspace/thirdlib/zlib/include -D_WITH_TARGET_NONE -D__MINIGUI_LIB__ -D_GNU_SOURCE -O2 -Wstrict-prototypes -pipe -MT pcxvfb.lo -MD -MP -MF .deps/pcxvfb.Tpo -c pcxvfb.c -fPIC -DPIC -o .libs/pcxvfb.lo

In file included from /usr/include/stdlib.h:25:0,

from pcxvfb.c:38:

/usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directory

#include <bits/predefs.h>

解决方法:根据错误提示,交叉编译时,链接了不该链接的/user/include目录,所以只要在对应目录下的Makefile中去掉不该链接的目录/usr/include/就可以了;进入/src/newgal/pcxvfb目录,修改里面Makefile的298行,将-I/usr/include/用#号屏蔽掉即可

AM_CPPFLAGS = -I$(abs_top_srcdir)/src/include -I$(abs_top_srcdir)/include \

-I$(abs_top_srcdir)/src/newgal/ #-I/usr/include/

七、编译libmgplus-1.4.0库:

1、解压libmgplus-1.4.0.tar.gz

2、使用configure脚本重新指定Makefile的编译参数:

|--a、生成动态库指令(会生成对应平台下的Makefile):

CC=arm-hisiv300-linux-gcc CPP=arm-hisiv300-linux-cpp LD=arm-hisiv300-linux-ld AR=arm-hisiv300-linux-ar RANLIB=arm-hisiv300-linux-ranlib STRIP=arm-hisiv300-linux-strip ./configure --prefix=/home/share_disk/workspace/thirdlib/mgplus --build=i386-linux --host=arm-hisiv300-linux --target=arm-hisiv300-linux --enable-shared

|--c、生成静态库指令(会生成对应平台下的Makefile):

CC=arm-hisiv300-linux-gcc CPP=arm-hisiv300-linux-cpp LD=arm-hisiv300-linux-ld AR=arm-hisiv300-linux-ar RANLIB=arm-hisiv300-linux-ranlib STRIP=arm-hisiv300-linux-strip ./configure --prefix=/home/share_disk/workspace/thirdlib/mgplus --build=i386-linux --host=arm-hisiv300-linux --target=arm-hisiv300-linux --enable-static

|--c、然后直接 make && make install就能生成新的libmgplus库;

|--报错1:agg_platform_support.cpp:29:28: fatal error: minigui/common.h: No such file or directory #include <minigui/common.h>

|--错误1原因:因为libmgplus依赖minigui核心库的minigui/common.h头文件以及lib,所以必须将CPPFLAGS变量里面加上minigui核心库的头文件,如export CPPFLAGS="-I/home/share_disk/workspace/thirdlib/minigui-core/include"

|--为什是设置CPPFLAGS环境变量而不是其他变量,原因请参见./configure --help中对CPPFLAGS的说明

|--特别注意:设置CPPFLAGS的操作必须在生成Makefile前,即执行./configure前,否则这个设置将不会更新到已经生成的Makefile中,导致依旧报错;

|--报错2:In file included from path.h:51:0,

from graphics.cpp:62:

../agg/font_freetype/agg_font_freetype.h:37:22: fatal error: ft2build.h: No such file or directory

#include <ft2build.h>

|--错误1原因:因为libmgplus依赖freetype2库的相关头文件和lib,所以必须将CPPFLAGS变量追加上freetype2的头文件路径,如:export CPPFLAGS="-I/home/share_disk/workspace/thirdlib/minigui-core/include -I/home/share_disk/workspace/thirdlib/freetype/include -I/home/share_disk/workspace/thirdlib/freetype/include/freetype2"

|--特别注意:

|--1、追加路径时不能使用CPPFLAGS=$CPPFLAGS:追加内容,否则依然报错;

|--2、freetype2需要同时追加include/和include/freetype2两个路径

./configure前需要设置的环境变量参数:

export CPPFLAGS="-I/home/share_disk/workspace/thirdlib/minigui-core/include"

export CPPFLAGS="-I/home/share_disk/workspace/thirdlib/minigui-core/include -I/home/share_disk/workspace/thirdlib/freetype/include -I/home/share_disk/workspace/thirdlib/freetype/include/freetype2"

export LDFLAGS="-L/home/share_disk/workspace/thirdlib/minigui-core/lib -L/home/share_disk/workspace/thirdlib/freetype/lib"

八、编译mg-samples-3.0.12:

1、设置环境变量;

export CPPFLAGS="-I/home/share_disk/workspace/thirdlib/minigui-core/include -I/home/share_disk/workspace/thirdlib/freetype/include -I/home/share_disk/workspace/thirdlib/freetype/include/freetype2 -I/home/share_disk/workspace/thirdlib/mgplus/include"

export CPPFLAGS="-I/home/share_disk/workspace/thirdlib/mgplus/include"

2、使configure生成Makefile:

CC=arm-hisiv300-linux-gcc CPP=arm-hisiv300-linux-cpp LD=arm-hisiv300-linux-ld AR=arm-hisiv300-linux-ar RANLIB=arm-hisiv300-linux-ranlib STRIP=arm-hisiv300-linux-strip ./configure --prefix=/home/share_disk/workspace/thirdlib//minigui-sample --build=i386-linux --host=arm-hisiv300-linux --target=arm-hisiv300-linux

3、make编译:

|--两个指针逻辑运算使用的是“位或”而不是“逻辑或”,改正成“逻辑或”就好了;

|--在这里编译会报一堆错误,这里的错误基本是Sample里面很多源码中没有正确包好对

应的头文件,导致提示很多内容没有定义;还有的就是使用的接口是全部大写,而实

际头文件中年确实大写+小写,一一修改正确就好了;

|--解决问题的技巧:使用windows下的在目录下搜索文件名和内容的方法,定位没有定义的变量或接口在库的哪个头文件中,然后添加到对应头文件中即可;

hi-3531a:minigui3.2.0移植相关推荐

  1. 从VC 6.0移植代码到VS C++ 2005得出的一些经验

    作者:朱金灿 来源:blog.csdn.net/clever101 最近将一个系统的源码从VC 6.0移植到VS C++ 2005上,从而得出了一些经验.不同编译平台的代码移植(这里指从低版本的编译器 ...

  2. [转]Qtopia2.2.0移植

    原文:http://blog.mcuol.com/User/longren/article/11362_1.htm 第一步:编译jpeg-6b得到jpeg库 先使用命令进行配置:./configure ...

  3. linux下能用qt5.0,qt5.0移植

    qt5.0 release版终于在2012/12/19出来了 看了下源码,模块化做得很不错,很多东西都从原来的qtbase里抽出来,变成单独模块,依赖关系变得很明确 然后就抽了点时间(到年底了,事情也 ...

  4. Linux内核3.0移植并基于Initramfs根文件系统启动

    Linux内核移植与启动 Target borad:FL2440 Bootloader:U-boot-2010.09 交叉编译器:buildroot-2012.08 1.linux内核基础知识 首先, ...

  5. cesm2(clm5.0)移植方法

    #武汉加油,浙江加油,中国加油!# 断断续续花了2个多月才把cesm2移植到centos6上,目前尚无cesm2完整的移植教程,在移植过程中也遇到了不少问题,所以在这里记录下,大致完整,但某些细节可能 ...

  6. rk3288-linux6.0移植

    kernel版本6.0.8,使用上篇文章里面的u-boot-2022.10(rk3288-u-boot-2022.10移植_gq213的博客-CSDN博客)引导内核. 根文件系统使用buildroot ...

  7. 基于fl2440内核linux-3.0移植----触摸屏移植

    开发环境: 开发板:FL2440(nandflash:K9F1G08 128M) 内核版本:linux-3.0 编译器:arm-linux-gcc 4.3.2 因为内核linux-3.0已经有支持触摸 ...

  8. U-Boot1.2.0移植YC2440

    移植U-Boot-1.2.0到YC2440 首先,U-Boot-1.2.0还没有支持s3c2440,这次移植是用s3c2410的文件修改而成.本移植参考网上一位叫tekkaman网友完成.感谢他们无私 ...

  9. Android 6.0移植memtest以及配合使用脚本

    今天,给大家分享一个内存压力测试的工具,memtester,首先需要我们下载相关源码: 下载地址如下:http://pyropus.ca/software/memtester/ 把memtester解 ...

最新文章

  1. 内置锁的能力不足以满足需求
  2. 网络电缆 计算机电缆,计算机电缆的技术参数
  3. 剑指offer(C++)-JZ36:二叉搜索树与双向链表(数据结构-树)
  4. Ubuntu sudo nopasswd方法
  5. html2canvas给图片添加水印,canvas 为图片添加水印
  6. JAVA对接飞猪旅行_飞猪对接教程
  7. 为数字添加千分位符号(金额千分位)
  8. docker 暴露端口 查看_Docker容器如何暴露端口
  9. html如何制作水滴效果图,html+css实现充电水滴融合特效代码
  10. 交易开拓者-附录一:计算公式
  11. Thinkphp5手册学习笔记-配置项
  12. 成功解决TypeError: super(type, obj): obj must be an instance or subtype of type
  13. 【论文阅读笔记】Multi-Task Feature Learning for Knowledge Graph Enhanced
  14. Linux-Shell(六)
  15. HttpRequest 介绍
  16. 估计标准误差syx_什么是判定系数r2和估计标准误差syx
  17. 【游戏精粹】模拟群体行为:Flocking算法
  18. C++ Parent和Child继承分析
  19. 全息投影在博物馆中有哪些作用
  20. 电脑监控软件有哪些?具体功能是什么

热门文章

  1. R 计算均方差MSE(mean squared error)
  2. C# winfrom窗体及控件 根据系统的分辨率自动调整位置
  3. APP推广基础知识大全
  4. iOS 中设置下划线失效不显示
  5. ​区块链公链“三元悖论”专题系列之去中心化(Decentralization)
  6. 小D的一串数字 (数位DP做法)
  7. python爬虫:找房助手V1.0-爬取58同城租房信息
  8. cad两直线相交画圆弧_CAD两直线,如何用圆弧连接?
  9. 2018年,NB-IoT这盘大棋该怎么下?
  10. EPOCH, BATCH, INTERATION