重新又要弄一下minigui了,这次是不得不。相比第一次时接触图形界面,现在的已经不是那么兴趣昂然。之前用的是minigui 1.3.X GPL版本。现在minigui的gpl版本已经到1.6.10了。新的版本当然比之前有更多的特性,但让最让我想放弃1.3.X版本有四个原因:1. 是网络上基本都已经用1.6版的了,网上资料较全,讨论的较多。
2. 官方对于1.6出的编程指南和用记手册等资料,都比原来写得细腻许多;同时官方对于1.6的配套实例非常多,这对于学习和编程来说是非常具有参考价值的。
3. 1.3.X已经是非常老的版本了,由于现在的Linux发行版软件已经较原来更新了太多太多了,所以用1.3.X的源代码来建立主机开发环境会有许多困难和不便的地方。
4. 还没想好,也许没了。这不重要。
好了,使用MiniGUI,包括以下几个方面:
1. 构建主机开发环境。这样我们就可以在我们的pc机上调试我们的界面程序,非常方便。
2. 构建开发板程序运行环境。因为前一步我们在pc机上调试好了我们的程序,经过交叉编译之后,程序就可以放到目标板上运行了。程序运行时一般需要调用函数库(静态编译除外),所以我们需要将Minigui交叉编译生成相应的库文件。
总之,上面两点无非就是构建环境而已,都是生成库文件、配置文件、资源,并将它们放到相应的路径下。所以大体上我们有以下几个步骤:
1. 编译生成库文件。对于pc机就用gcc来编译生成,对于arm目标板就用arm-linux-gcc来交叉编译。最后都生成了库文件(当然这里用的是动态库文件“.so文件”)
2. 放置配置文件。MiniGUI.cfg是它的配置文件,在我们的主程序真正运行之前,minigui会读取它。
3. 资源。minigui当然要用到一些资源,比如说字体、图标、位图、鼠标光标等。
废话已多。我们先来构建主机开发环境吧。
下载的一些文件如下:
------这两个是必须的-----------------------------
libminigui-1.6.10.tar.gz 函数库源代码。MiniGUI由三个函数库组成,分别是libminigui(提供窗口管理和图形接口的核心函数库,也提供标准控件)、libmgext(提供一些高级控件及“文件打开”、“颜色选择”对话框等)、libvcongui(为Linux提供了一个应用程序可用的虚拟控制台窗口,可以在MiniGUI环境中运行字符界面的应用程序)。
minigui-res-1.6.10.tar.gz MiniGUI所使用的资源,包括基本字体、图标、位图和鼠标光标。
-----图形界面推荐安装qvfb,很方便-----------------
qvfb-1.0.tar.gz
-------这些是例子原码,参考用----------------------
mg-samples-1.6.10.tar.gz 编程指南的配套示例程序。
mde-1.6.10.tar.gz MiniGUI的综合演示程序包,其中包含有一些较为复杂的示例程序。
mgallery-1.0.tar.gz 这个好像是飞漫演示程序之类的
samples-1.6.10.tar.gz 这里面的实例挺大的,很有价值。
games-1.6.10.tar.gz 这里面有三个游戏。
mesa-6.5-minigui.tar.gz
-------下面几个是文档,当然都应该好好看看-------------
MiniGUITechWhitePaper-2.0-4C.pdf
MINIGUI-USER-MANUAL-V2.0-4C.pdf
minigui-datasheet-2.0-4c.pdf
MINIGUI-PROG-GUIDE-V2.0-4C.pdf
1. libminigui的编译。这一步感比1.3版本的编译要顺利的多,因为是建立主机的开发环境,所以对于库的配置稍少一点,当然也可以直接./configure,默认的配置已经符合了一般的要求(可以查阅用户手册里关于编译选项的说明)。
配置主要注意一下以下几个方面:
指定 MiniGUI 要运行的操作系统或者目标板。
指定生成基于线程的 MiniGUI-Threads 运行模式还是基于进程的 MiniGUI-Processes 运行模式,或者只是最简单的 MiniGUI-Standalone 运行模式。
指定需要支持的图形引擎和输入引擎,以及引擎相关选项。
指定需要支持的字体类型、内嵌的字体种类。
指定需要支持的字符集。
指定需要支持的图像文件格式。
指定需要支持的控件类。
指定控件的整体风格,是经典(CLASSIC)风格、平面(FLAT)风格还是时尚(FASHION)风格。
make
make install (因为我已经装过1.3.X版本的,但不想卸掉,所以更改库的路径即可。这里我安装在了/usr/local/lib/minigui1.6,而1.3.X的库我放在了/usr/local/lib/minigui1.3)。
2. MiniGUI.cfg
当我们运行基于minigui的图形应用程序时,会默认读取这个文件。该文件为minigui的配置文件。需要配置的有:图形引擎或者输入引擎;要装载的设备字体;要装载的位图、光标资源等等。在 MiniGUI 应用程序启动时,MiniGUI 优先查找当前目录下的MiniGUI.cfg文件、用户主目录下的.MiniGUI.cfg文件,其次是/usr/local/etc/MiniGUI.cfg,最后是/etc/MiniGUI.cfg 文件。
make install之后,会看到一个etc目录,里面有好几个配置方件。
MiniGUI-classic.cfg
MiniGUI-fashion.cfg
MiniGUI-flat.cfg
MiniGUI-min.cfg
之前配置的是哪种风格的就用哪个。我编译的时候用的是fashion风格的,所以这里将MiniGUI-fashion.cfg复制到/usr/local/etc/下并命名为MiniGUI.cfg
3. res 。 minigui-res-1.6.10目录下,查看一下README文件里有下面这样的描述:
Installation path by default:
/usr/local/lib/minigui/res
Run
make install
to install the resource files.
Run
make uninstall
to uninstall the resource files.
所以直接sudo make install 。这里就是把一些文件复制到另外的一个地址去。
4. mg-samples
./configure
make
然后src下的就会看到一些生成的可执行文件了。
5. mde
同上
./configure
make
6. qvfb
这个我之前就配置好了,所以这里不再配置。
7. 编译samples-1.6.10的时候,提示缺少-lttf。下载freetype1.3.1(好像必须要这个版本的),按照1.3.3移植详解里面的步骤来安装。虽然那篇文章里是交叉编译的,但对于主机编译仍然适用。
里面的原话如下:
[user]#
cd libttf
[user]# arm-linux-gcc -c -fPIC -O2 freetype.c //不要奇怪,对,我们只要编译这一个 .c
文件,因为它包括了其它所有的 .c 文件了,你可以自己查看它的内容
[user]# arm-linux-gcc -c -fPIC -O2
-I./ extend/*.c 把 extend 下所有的 .c 文件全部编译
[user]# arm-linux-gcc --shared -o libttf.so *.o 生成最后的动态链接库,OK了
|
最后,把生成的libttf.so移到/usr/local/lib/里。
然后再编译samples-1.6.10,就过去了。
总结:对于1.6版本的来说,再也没有其他的好记录的了。因为它在我这里的fedora11里编译的很顺畅,再也没有1.3.x那样的困难了。这里记录的只是主机环境的搭建,说穿了,只是一个调试环境的搭建而已。最终的目的当然是要让程序最后能在目标板上运行,这才是最重要的。
阅读(2168) | 评论(0) | 转发(0) |