今天开始决定用MiniGUI,Ubuntu系统莫名的挂掉了,进不去桌面了,原因不详,以后研究吧
参考了两篇很好的文章
1.http://wiki.minigui.com/bin/view/Columns/HuangSHArticle1?rev=3(主要根据这篇文章做的)
2.http://hi.baidu.com/dropcrab/blog/item/137308120676b4886538db11.html
工作环境:
硬件:arm s3c2440,触摸屏的驱动文件已经放入到内核中
linux: red hat enterprise5
交叉编译工具: arm-linux-gcc-3.4.1
移植步骤:
1.安装交叉编译工具
1.1 交叉编译工具链的存放目录:/usr/local/arm/3.4.1/
1.2修改环境变量:
打开$HOME 目录下的.bash_profile 文件,修改PATH 脚本行为:
PATH=$PATH:/usr/local/arm/3.4.1/bin 保存.bash_profile 文件后,注销用户,再以同一用户登录,PATH
环境变量生效.
2.安装zlib 库、png 库、 jpeg 库、popt 库,具体见上面两片文章
注:
2.1在安装zlib库的时候最后注意把gcc和ld改过来
(我就是忘了修改ld,导致gcc不能用了,开始还以为gcc坏了,最后才想起来,以后遇到问题要细心)
2.2安装png库
安装 png 库,这个是用来显示 png 图形的,MiniGUI 里很多图都是 png 的,如果没这个库,你的 MiniGUI 将无法正常工作,切记切记!
还是那句话,库不要用最新的,最新的容易有问题,用这个老一点的就没问题了
2.3安装jpeg库的时候不然的话就会出现 libtool 找不到之类的错误,第一篇文章上说,要编译dummy.c,可是不知道具体怎么操作,最后在第二篇文章上解决了,去掉最后的编译选项--enable-shared就可以了,不过不知道有什么后果,具体以后研究
安装完了,查看下/usr/local/arm/3.4.1/arm-linux/目录下的 lib 文件夹里是否有 libjpeg.so,libjpeg.so.62.0.0 等文件和include 文件夹里是否有 jpeglib.h 文件。
注:进过4.2号测试,发现这种变异方法编译会少库文件,因此这种方法不正确,正确的方法为:
由于jpeg库的安装少了libtool,因此要从http://ftp.gnu.org/gnu/libtool/下载libtool(我下的为libtool-2.2.6b.tar.gz)
编译安装libtool:
然后把libtool-2.2.6b/文件夹下的libtool文件拷到jpeg-6b文件夹下,重新交叉编译jpeg-6b:
成功~~~
附:
简短说明
libtool 提供通用的库编译支持。
libtoolize 提供了一种标准方式来将libtool支持加入到一个软件包。
libltdl隐藏 dlopening 库的复杂细节。
Libtool 安装依赖关系
Libtool 依赖于: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Sed.
2.4安装 popt 库,第一篇文章的./configure命令有问题,我采用了第二篇文章的
我开始在ubuntu9.10上没有编译通过,最后在red hat enterprise5上编译通过了,原因有待研究
这个库在编译 mde 程序时需要使用,不然编译没法通过
3.编译安装minigui-res-1.6.10.tar.gz
说明:minigui 所使用的资源,包括基本字体、图标、位图和鼠标光标
4.编译安装libminigui-1.6.10.tar.gz
说明:minigui函数库源代码。
5.拷贝库文件和资源文件
5.1拷贝库文件:
“把/usr/local/arm/3.4.1/arm-linux/lib 中相应的库拷到 /nfs/lib 目录下去,下面是我拷的库文件:
libjpeg.a libmgext-1.3.so.3 libminigui.a libpng.so.2 libttf.a libz.so
libjpeg.la libmgext-1.3.so.3.0.0 libminigui.la libpng.so.2.1.0.10rc1 libttf.so libz.so.1
libjpeg.so libmgext.a libminigui.so libpopt.a libvcongui-1.3.so.3 libz.so.1.2.3
libjpeg.so.62 libmgext.la libm.so libpopt.la libvcongui-1.3.so.3.0.0 minigui
libjpeg.so.62.0.0 libmgext.so libm.so.6 libpopt.so libvcongui.a shared
libm-2.2.3.so libminigui-1.3.so.3 libpng.a libpopt.so.0 libvcongui.la
libm.a libminigui-1.3.so.3.0.0 libpng.so libpopt.so.0.0.0 libvcongui.so
其中一些.a 的静态库是不需要拷过去的,另外要运行c程序还需要拷一些libc标准库进去,我图方便,直接将整个/usr/local/arm/3.4.1/arm-linux/lib考到/nfs下面,呵,懒人的做法。”
我是直接把所有的都拷过去了,以防都掉的,/usr/local/arm/3.4.1/arm-linux/lib 到 arm板上的/lib
5.2拷贝资源文件:
/usr/local/lib/minigui/res到 arm上的 /usr/local/lib/minigui/res/,实际上这个目录与配置文件 MiniGUI.cfg里的相应内容的目录一致,以便找到相应的资源
5.3
拷贝配置文件MiniGUI.cfg:
[root]# cp /usr/local/arm/3.4.1/arm-linux/etc/MiniGUI.cfg /nfs/usr/local/etc/
修改配置文件MiniGUI.cfg:
[system]
# GAL engine
gal_engine=fbcon //这里修改
# IAL engine
ial_engine=dummy // 这里修改,我用的是触摸屏,所以就用dummy肯定不会错
mdev=/dev/tp //解摸屏
mtype=none
[fbcon]
defaultmode=320x240-16bpp // 根据你的LCD大小自己设置,设置错误minigui 就启动不了
6.编译综合例子 mde-1.6.10
编译后,把该文件夹下的文件夹都考到arm的文件系统中/demo中,里面都是例子
7.运行demo里面的例子,出现错误
[root@avantech same]$ ./same
NEWGAL: bad video mode parameter: 320*240-16bpp.
InitGUI: Reading configuration failure!
明天解决。。。。
2010-03-31晚于15#实验室22:31:41