简介

MiniGUI 是一款面向嵌入式系统的高级窗口系统(Windowing System)和图形用户界面(Graphical User Interface,GUI)支持系统,由魏永明先生于 1998 年底开始开发。2002 年,魏永明先生创建北京飞漫软件技术有限公司,为 MiniGUI 提供商业技术支持,同时也继续提供开源版本,飞漫软件是中国地区为开源社区贡献代码最多的软件企业。最后一个采用 GPL 授权的 MiniGUI 版本是 1.6.10,从 MiniGUI 2.0.4 开始 MiniGUI 被重写并使用商业授权,从3.0.12开始,部分版本使用GPL授权。历经十余年时间, MiniGUI 已经成为性能优良、功能丰富的跨操作系统嵌入式图形用户界面支持系统,支持Linux/uClinux、eCos、 uC/OS-II、 VxWorks、ThreadX、Nucleus 、pSOS、OSE 等操作系统和数十种 SoC芯片,已验证的硬件平台包括 ARM-based SoCs、MIPS based SoCs、IA-based SoCs、PowerPC、M68K(DragonBall /ColdFire)、Intel x86 等等。

准备工作

源码的下载

从miniGUI官网上下载,需要有新浪账号或者twitter账号。下面是我下载的版本。

01	[root@localhost minigui]# ls -l *.tar.gz
02 -rwxrw-rw-. 1 root root 1427072 Jan 16 17:30 freetype-1_3_1.tar.gz
03 -rw-rw-r--. 1 root root 63582 Jan 16 17:31 gvfb-1_0_0.tar.gz
04 -rw-rw-r--. 1 root root 602762 Jan 16 17:32 qvfb2-2_0.tar.gz
05 -rwxrw-rw-. 1 root root 557220 Feb 11 00:56 zlib-1.2.6.tar.gz
06 -rwxrw-rw-. 1 root root 1059513 Feb 11 00:55 libpng-1.5.8.tar.gz
07 -rwxrw-rw-. 1 root root 986681 Feb 10 23:42 jpegsrc.v8c.tar.gz
08 -rw-rw-r--. 1 root root 340656 Jan 16 17:33 libmg3d-1_0_2.tar.gz
09 -rw-rw-r--. 1 root root 1545209 Jan 16 17:34 libmgi-2_0_4.tar.gz
10 -rw-rw-r--. 1 root root 1116885 Jan 16 17:33 libmgp-1_2_2.tar.gz
11 -rw-rw-r--. 1 root root 648207 Jan 16 17:34 libmgplus-1_2_4.tar.gz
12 -rw-rw-r--. 1 root root 659702 Jan 16 17:33 libmgutils-1_0_4.tar.gz
13 -rw-rw-r--. 1 root root 3202804 Jan 17 00:29 libminigui-gpl-3_0_12.tar.gz
14 -rw-rw-r--. 1 root root 2608473 Jan 16 17:29 mg-samples-3_0_12.tar.gz
15 -rw-rw-r--. 1 root root 3449215 Jan 16 17:29 minigui-res-be-3_0_12.tar.gz

官网上有几个库的版本太低,所以需要自己去网上下载,其中jpegsrc.v8c.tar.gz、libpng-1.5.8.tar.gz和zlib-1.2.6.tar.gz都是从网上找的最近版本(png和zlib这两个

soucefoge上都有,前面一个是网上搜的,所以不能保证链接长期有效,但是网上搜一下还是比较容易找到的)。其实我也是在运行例子程序的时候才发现问题的,库更新后就可以正常运行了。

简单介绍一下使用到的几个库。

freetype:FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图、反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想,因此,FreeType的用户可以灵活地对它进行裁剪。

gvfb与qvfb2:这两个主要用于pc上仿真,在嵌入式平台上没用,就不做说明。

zlib:zlib是提供数据压缩用的函式库,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在1995年5月1日发表。zlib使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。

libpng:这个是用来显示png图形的,MiniGUI里很多图都是png的,如果没有这个库,MiniGUI将无法正常工作。

jpeg:用于显示jpeg图像,否则程序不能正常运行。

minigui-res:minigui3.0工具栏所使用的资源集合,包括字体、图标、位图等。

libminigui:minigui3.0的核心库。

mg-samples:minigui3.0的例子程序,有一两个小游戏,可以玩玩~~

minigui可选组件:libmg3d(3D支持)、libmgi(提供输入接口)、libmgp(提供打印机接口的支持)、libmgplus(2D矢量图支持和图像加速)、libmgutils(提供一些常用对话框的模板),可以根据自己的需要使用,在跑例子程序的时候使用到了libmgplus,所以就临时编了它的lib。

交叉编译图像库

先将代码解压到你所放置代码的位置,然后再进行如下步骤来编译安装图像库。我的安装目录是:/usr/local/minigui,可以根据自己的习惯和喜好安装在其他目录,通过prefix参数来配置安装目录。

编译zlib库

编译与配置脚本:

[root@localhost] CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
AS=arm-linux-as \
AR=arm-linux-ar \
./configure --prefix=/usr/local/minigui \
--shared
#配置完成后
[root@localhost] make
[root@localhost] make install

编译png库

[root@localhost] CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
AS=arm-linux-as \
AR=arm-linux-ar \
./configure --prefix=/usr/local/minigui \
--build=i386-linux \
--host=arm-linux \
--target=arm-linux
[root@localhost] make
[root@localhost] make install

编译Jpeg库

[root@localhost] CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
AS=arm-linux-as \
AR=arm-linux-ar \
./configure --prefix=/usr/local/minigui \
--build=i386-linux \
--host=arm-linux \
--target=arm-linux \
--enable-shared
[root@localhost] make
[root@localhost] make install

编译freetype库

自动配置还有问题,也没有尝试高版本的freetype能不能使用,暂时就先这样,好像例子代码里面并没有使用它。后面再尝试高版本的freetype。

01	[root@localhost] cd freetype-1.3.1/
02 [root@localhost] ./configure --host=arm-linux --enable-static --prefix=/usr/local/minigui
03 [root@localhost] vim config.cache
04 # 修改如下行
05 ac_cv_path_LD=${ac_cv_path_LD=arm-linux-gnu-ld}
06 ac_cv_prog_CC=${ac_cv_prog_CC=arm-linux-gnu-gcc}
07 ac_cv_prog_CPP=${ac_cv_prog_CPP='arm-linux-gnu-gcc -E'}
08 #重新配置
09 [root@localhost] ./configure --host=arm-linux --enable-static --prefix=/usr/local/minigui
10 # 修改Makefile文件,以跳过编译test目录。
11 # 去掉“all:”后的变量“tttest”
12 # 注释掉“install:”下的第二行:“cd $(FTTESTDIR); $(MAKE) –f$(MAKEFILE) install”
13 [root@localhost] make
14 [root@localhost] make install

安装minigui资源库

[root@localhost] CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
AS=arm-linux-as \
AR=arm-linux-ar \
./configure --prefix=/usr/local/minigui
[root@localhost] make
[root@localhost] make install

编译minigui核心库

配置脚本:

[root@localhost] CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
CFLAGS="-I/usr/local/minigui/include -I/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/include " \
CPPFLAGS="-g -I/usr/local/minigui/include -I/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/include " \
CXXFLAGS="-g -I/usr/local/minigui/include -I/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/include " \
./configure --prefix=/usr/local/minigui \
--host=arm-linux \
--target=arm-linux \
--build=i386-linux \
--with-osname=linux \
--with-style=classic \
--with-targetname=fbcon \
--enable-autoial \
--enable-rbf16 \
--disable-vbfsupport
[root@localhost] make
[root@localhost] make install遇到错误:pcxvfb.c:490:13: error: impossible constraint in ‘asm’,因为使用了错误的头文件,解决方法如下: 修改Makefile: src/newgal/pcxvfb/Makefile,把相关的地方都去掉,就两个地方如下:
#oldincludedir = /usr/include
INCLUDES = -I$(abs_top_srcdir)/src/include -I$(abs_top_srcdir)/include \
-I$(abs_top_srcdir)/src/newgal/ -I/usr/include

编译minigui例子程序

例子程序也不是一帆风顺的,从配置到最后编译都会有问题。具体配置脚本如下:

[root@localhost] CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
CFLAGS="-I/usr/local/minigui/include -I/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/include " \
CPPFLAGS="-g -I/usr/local/minigui/include -I/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/include " \
CXXFLAGS="-g -I/usr/local/minigui/include -I/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/include " \
./configure --prefix=/usr/local/minigui \
--build=i386-linux \
--host=arm-linux \
--target=arm-linux

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

出现error:

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.

修改,添加PKG_CONFIG_PATH路径 ,重新configure

#./configure  --prefix=/home/walkman/Downloads/minigui/source/ --build=i386-linux --host=arm-linux --target=arm-linux
export PKG_CONFIG_PATH=/usr/local/minigui/lib/pkgconfig

修改dbuff目录下的watch.c文件将类型修改为int类型

注释ctrl_dlg目录下的dlgdemo.c文件

部署图像库

其实这个工作很简单,主要有两个步骤,一个修改minigui的配置文件,另一个是拷贝库文件到文件系统就可以了。配置文件在minigui的wiki上也有较详细的介绍,可以参考:《MiniGUI V3.0 的运行》

修改配置文件:

view source
print?
01 $ vim /usr/local/minigui/etc/MiniGUI.cfg
02 # 修改如下参数
03 # GAL engine and default options
04 gal_engine=fbcon
05
06 # IAL engine
07 ial_engine=console
08 mdev=/dev/input/mice
09 mtype=IMPS2
10
11 # 根据实际的显示大小填
12 [fbcon]
13 defaultmode=480x272-16bpp
拷贝库到文件系统:
1 $ cp /usr/local/minigui/* /myrootfs/usr/local

拷贝你的例子程序就可以在开发板上运行了~~

qvfb2 的安装(进入 qvfb2 的源码目录,运行如下命令):

./configure --with-qt-includes=/usr/include/qt3 --with-qt-libraries=/usr/lib/qt3

配置qvfb路径

在/ues/local/etc/MniiGUI.cfg

#{{ifdef _MGGAL_PCXVFB
[pc_xvfb]
defaultmode=800x600-16bpp
window_caption=XVFB-for-MiniGUI-3.0-(Gtk-Version)
exec_file=/usr/local/bin/qvfb2 //qvfb路径
#/usr/local/bin/qvfb2
#}}

minigui交叉编译整理的更多相关文章

  1. 新塘ARM平台交叉编译minigui界面库

    简介 MiniGUI 是一款面向嵌入式系统的高级窗口系统(Windowing System)和图形用户界面(Graphical User Interface,GUI)支持系统,由魏永明先生于 1998 ...

  2. [转载]tslib1.4与Qt4.8.6的交叉编译与移植

    原文:http://www.cnblogs.com/Jasonsblog/p/3757985.html http://blog.csdn.net/sno_guo/article/details/168 ...

  3. tslib1.4与Qt4.8.6的交叉编译与移植

    最近开始正式接触QT开发,网上看了些移植教程都写的有点乱,博客园的emouse思·睿有一篇写的很好的文章,下面是文章的链接 http://www.cnblogs.com/emouse/archive/ ...

  4. 在Ubuntu下安装imx6linux系统的交叉编译环境遇到的问题总结

    这段时间一直忙于手上的嵌入式项目,可以说自己从嵌入式的菜鸟一点点的入门了,关于嵌入式和imx6核心板的开发有了一点的了解,尤其是对于板子环境的搭建.硬件的开发,搭建环境,是一个很大的工程量,也是很重要 ...

  5. ARM交叉编译工具链分类说明

    转载整理自:http://www.veryarm.com/cross-tools 从授权上,ARM交叉编译工具链分为免费授权版和付费授权版. 免费版目前有三大主流工具商提供,第一是GNU(提供源码,自 ...

  6. 【cocos 2d-x】VS2013+cocos2d-x3.3Final+Adriod交叉编译环境配置(超详细版)

    本系列文章由@二货梦想家张程 所写,转载请注明出处. 作者:ZeeCoder  微博链接:http://weibo.com/zc463717263 我的邮箱:michealfloyd@126.com ...

  7. cocos2dx跟eclipse交叉编译“make: * No rule to make target `all' Stop”的解决方案

    cocos2dx和eclipse交叉编译“make: *** No rule to make target `all'. Stop”的解决方案 搞cocos2dx在eclipse上的交叉编译. 项目. ...

  8. libmodbus相关资料整理

    /****************************************************************************** * libmodbus相关资料整理 * ...

  9. 使用mingw 对libcURL,openSSL,zLib交叉编译

    使用mingw 对libcURL,openSSL,zLib交叉编译   将三个库解压到同一目录下 比如取目录名为 "source" 的目录   提前安装active-perl 配置 ...

随机推荐

  1. 使用kvm虚拟出Centos6.5系统相关步骤

    使用kvm虚拟出Centos6.5系统相关步骤 kvm是啥东西,亲们自行百度哇,一两句话也说不清楚,直接进主题使用宿主机虚拟出一台centos6.5的系统,当然其他系统也可以的,考虑到企业常用服务器系 ...

  2. PNG类库

    libpng depends on Zlib http://www.libpng.org/pub/png/libpng.html LodePNG http://lodev.org/lodepng/ P ...

  3. js数字、字符串、数组之间的转化

    1.数组转字符串 var a, b; a = ,,,,); b = a.join("-"); 2.字符串转数组 var s = "abc,abcd,aaa"; ...

  4. Lua 之string库

    标准string库 基础字符串函数 string.len(s) 返回一个字符串的长度,例如 string.rep(s, n) 返回一个新的字符串,该字符串是参数s重复n次得到的结果,例如 )) -- ...

  5. 记录两张数据库表及Ibatis操作

    建表语句 CREATE TABLE `TS_MopayInvoiceComposition` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `RequestID` i ...

  6. echarts X轴数据显示不全问题

    很奇怪,X轴只显示了部分节点.没有显示全. 在xAxis上加上下面的配置就能解决: xAxis: [ { type: 'category', axisLabel :{ interval:0 }, // ...

  7. 理解JavaScript中的arguments,callee,caller,apply

    arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]arguments[n] 参数function :选项.当前正在执行的 Function 对象的名字. n : ...

  8. linux下生成core dump文件方法及设置

    linux下生成core dump文件方法及设置    from:http://www.cppblog.com/kongque/archive/2011/03/07/141262.html core ...

  9. 也谈Promise

    最新的ES6标准添加有Promise方法,但自己在项目中一直使用jQuery(jQuery自己实现了不标准的Promise),加上es6标准还没有得到普及,也就懒得学习相关资料. 最近手头上的活少了, ...

  10. [译]View components and Inject in ASP.NET MVC 6

    原文:http://www.asp.net/vnext/overview/aspnet-vnext/vc 介绍view components view components (VCs) 类似于part ...