hi-3531a:minigui3.2.0移植
一、移植资源包介绍:
作者: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移植相关推荐
- 从VC 6.0移植代码到VS C++ 2005得出的一些经验
作者:朱金灿 来源:blog.csdn.net/clever101 最近将一个系统的源码从VC 6.0移植到VS C++ 2005上,从而得出了一些经验.不同编译平台的代码移植(这里指从低版本的编译器 ...
- [转]Qtopia2.2.0移植
原文:http://blog.mcuol.com/User/longren/article/11362_1.htm 第一步:编译jpeg-6b得到jpeg库 先使用命令进行配置:./configure ...
- linux下能用qt5.0,qt5.0移植
qt5.0 release版终于在2012/12/19出来了 看了下源码,模块化做得很不错,很多东西都从原来的qtbase里抽出来,变成单独模块,依赖关系变得很明确 然后就抽了点时间(到年底了,事情也 ...
- Linux内核3.0移植并基于Initramfs根文件系统启动
Linux内核移植与启动 Target borad:FL2440 Bootloader:U-boot-2010.09 交叉编译器:buildroot-2012.08 1.linux内核基础知识 首先, ...
- cesm2(clm5.0)移植方法
#武汉加油,浙江加油,中国加油!# 断断续续花了2个多月才把cesm2移植到centos6上,目前尚无cesm2完整的移植教程,在移植过程中也遇到了不少问题,所以在这里记录下,大致完整,但某些细节可能 ...
- rk3288-linux6.0移植
kernel版本6.0.8,使用上篇文章里面的u-boot-2022.10(rk3288-u-boot-2022.10移植_gq213的博客-CSDN博客)引导内核. 根文件系统使用buildroot ...
- 基于fl2440内核linux-3.0移植----触摸屏移植
开发环境: 开发板:FL2440(nandflash:K9F1G08 128M) 内核版本:linux-3.0 编译器:arm-linux-gcc 4.3.2 因为内核linux-3.0已经有支持触摸 ...
- U-Boot1.2.0移植YC2440
移植U-Boot-1.2.0到YC2440 首先,U-Boot-1.2.0还没有支持s3c2440,这次移植是用s3c2410的文件修改而成.本移植参考网上一位叫tekkaman网友完成.感谢他们无私 ...
- Android 6.0移植memtest以及配合使用脚本
今天,给大家分享一个内存压力测试的工具,memtester,首先需要我们下载相关源码: 下载地址如下:http://pyropus.ca/software/memtester/ 把memtester解 ...
最新文章
- 内置锁的能力不足以满足需求
- 网络电缆 计算机电缆,计算机电缆的技术参数
- 剑指offer(C++)-JZ36:二叉搜索树与双向链表(数据结构-树)
- Ubuntu sudo nopasswd方法
- html2canvas给图片添加水印,canvas 为图片添加水印
- JAVA对接飞猪旅行_飞猪对接教程
- 为数字添加千分位符号(金额千分位)
- docker 暴露端口 查看_Docker容器如何暴露端口
- html如何制作水滴效果图,html+css实现充电水滴融合特效代码
- 交易开拓者-附录一:计算公式
- Thinkphp5手册学习笔记-配置项
- 成功解决TypeError: super(type, obj): obj must be an instance or subtype of type
- 【论文阅读笔记】Multi-Task Feature Learning for Knowledge Graph Enhanced
- Linux-Shell(六)
- HttpRequest 介绍
- 估计标准误差syx_什么是判定系数r2和估计标准误差syx
- 【游戏精粹】模拟群体行为:Flocking算法
- C++ Parent和Child继承分析
- 全息投影在博物馆中有哪些作用
- 电脑监控软件有哪些?具体功能是什么
热门文章
- R 计算均方差MSE(mean squared error)
- C# winfrom窗体及控件 根据系统的分辨率自动调整位置
- APP推广基础知识大全
- iOS 中设置下划线失效不显示
- ​区块链公链“三元悖论”专题系列之去中心化(Decentralization)
- 小D的一串数字 (数位DP做法)
- python爬虫:找房助手V1.0-爬取58同城租房信息
- cad两直线相交画圆弧_CAD两直线,如何用圆弧连接?
- 2018年,NB-IoT这盘大棋该怎么下?
- EPOCH, BATCH, INTERATION