MiniGUI的移植
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在AT91SAM9261EK上移植MiniGUI
当前流行的图形用户界面有MiniGUI、ucGUI、QT/Embedded等,ucGUI需要付费才能使用,QT/Embedded占用资源多,内存消耗大。MiniGUI是遵循GPL条款发布的自由软件,目标是为基于Linux的实时嵌入式系统提供一个轻量级的图形用户界面支持系统,与其他GUI比,MiniGUI的特点是轻型、占用资源少。
交叉编译工具:arm-linux-gcc-4.3.2
宿主机:fedora7 ——linux
Linux kernel: 2.6.21
开发平台:A T91SAM9261EK
一、准备相关资源
Libminigui-1.6.10.tar.gz MiniGUI函数库源代码
Miniguires-1.6.10.tar.gz MiniGUI所使用的资源,包括基本字体、图标、位图等。
Mg-samples-str-1.6.10.tar.gz MiniGUI的演示程序。
Mde-1.6.10.tar.gz MiniGUI 图像界面应用程序
二、建立相关目录、解压缩文件
⑴mkdir /mtemp/minigui 存放源文件
⑵展开各个文件:
tar –xvzf libminigui-1.6.10.tar.gz
tar –xvzf miniguires-1.6.10.tar.gz
tar –xvzf mg-samples-str-1.6.10.tar.gz
tar –xvzf mde-1.6.10.tar.gz
在/mtemp/minigui/下面会生成四个对应的文件。
三、交叉编译MiniGUi
在宿主机上建立/usr/local/minigui用于存放编译安装生成的库文件
⑴libminigui的编译安装
cd libminigui-1.6.10
运行配置脚本文件:
./configure –prefix=/usr/local/minigui –build=i386-linux –target=arm-linux –host=arm-linux
执行完后生成Makefile文件,然后依次执行make make install命令,如果没有错误出现,那么成功,MiniGUI的函数库和头文件以及配置文件等资源被安装在/usr/local/minigui下面。函数库:/usr/local/minigui/lib
头文件:/usr/local/minigui/include
配置文件:/usr/local/minigui/etc
手册:/usr/local/minigui/man
安装后如下图所示:
⑵MiniGUI-res的编译安装
cd minigui-res-1.6.10
首先要对config.linux文件做一些修改。指明编译路径:
保存后直接make install,在指定的位置生成res文件夹
⑶mg-samples的编译安装
cd mg-samples-1.6.10
./configure --build=i386-linux --prefix=/usr/local/minigui --host=arm-linux --target=arm-linux LDFLAGS=-L/usr/local/minigui/lib CFLAGS=-I/usr/local/minigui/include
配置后,直接make即可,若干秒后编译完成,在res文件夹下面会生成一些例子和执行程序,如下所示:
至此,完成演示程序的编译。
在以上的编译过程中出现了如下两个错误,感觉很纳闷,对此太不熟悉了。
首先看第一个错误,在libminigui-1.6.10 make时出现如下错误
ial.c:309: error: 'InitRm9200Input' undeclared here (not in a function)
ial.c:309: error: 'TermRm9200Input' undeclared here (not in a function)
参照论坛中的意见,在ial.c里面加入extern 声明上面的两个函数,原因是这两个函数的原型在dummy.c里面,但是ial.c却不知道,理论上也应该在dummy.h中添加上述两个函数的声明。我没有添加。编译通过了。按道理这样的情况一般不会出现,可能是在第一步配置的时候漏掉了什么。我查看dummy.c文件,没有发现上面两个函数的原型。
第二个错误:在编译mg-samples-str的时候出现错误,如下:
/usr/local/minigui/lib/libminigui.so: undefined reference to `InitRm9200Input'
/usr/local/minigui/lib/libminigui.so: undefined reference to `TermRm9200Input'
解决这个问题颇费了周折,网上搜了一大圈圈也米有找到相关的办法,一时陷入了泥潭。偶尔想起来了,在编译libminigui之前曾对他进行配置过,就是通过vim configure打开的文件,将里面11201行的build_fxrm9200_ial_engine=”no”改为”yes”,不能确定,于是将其改回去,重新编译了libminigui,安装,没有出现第一个错误。再继续编译mg-samples,也没有第二个错误产生了。当时很兴奋,但是依然不明就里,很郁闷。先整起再说吧。
四、拷贝MiniGUI的资源到开发板中