Linux下Minigui开发环境的搭建(PC+S3C2440

2019-07-13 04:07发布

花了两天时间终于把Minigui的开发环境搭建好了,遇到了很多问题,看了很多人的博客,对我的启发很大。关键是以前偷懒装redhat的时候为了省空间,很多库文件都没安装搞的自己很狼狈,不过也由于这个原因,让我真正细细的实践了一遍Minigui的移植,理解加深了很多。
 
Minigui算是我们中国人在世界软件界的骄傲了,作为中国人理应学它,虽然现在基本都用QT了。(关键是我的开发板只有16M的NORFLASH,华恒的板子真会赚钱,故意留个NANDFLASH不给你焊接上去,唉这么小的ROM只能望QT兴叹了)不过MiniGUI做的不错,玩了玩他们自带的扫雷啥的小游戏,还挺爽的。
 
华恒的S3C2440的光盘里面已经讲交叉编译环境下的Minigui给你做的七七八八了。下面是华恒的交叉编译环境的搭建步骤
A.编译minigui (在libminigui-1.3.3目录下操作)
B.编译minigui支持资源 (在minigui-res-1.3.3目录下操作)
C.编译minigui的示例程序 (在mg-samples-1.3.1mde-1.3.0目录下操作)
D.以上步骤编译出来的文件放到文件系统映像(ramdisk.image.gz)文件去
为了方便,我们上述目录和nfsroot目录都放入一个HHTECH字母打头脚本文件,执行相应脚本文件,就可以完成一系列的操作,可以使用vi打开相关文件看看,所做的操作将在下面介绍移植过程作出介绍。
A.在libminigui-1.3.3目录下编写了HHTECH.inst.lib脚本文件,执行此文件就可以把mingui 的库、包含文件等文件编译好,以便后面操作。
B.在mingui-res-1.3.3目录下编写了HHTECH.inst脚本文件,执行此文件,就可以把运行minigui示例程序时需要的相关资源拷贝到/HHARM2440/applications/minigui-free/nfsroot目录的相关目录下去。
C.在mg-samples-1.3.1和mde-1.3.0目录下编写了HHTECH.compile.mg脚本文件,执行此文件,在mg-samples-1.3.1/src和mde-1.3.0/bomb目录及其它目录下就可以生成minigui的示例,mg-samples目录下是一些简单的示例,mde-1.3.1目录下是复杂一些的示例或应用程序。这些应用程序需要客户可以自行选择哪些拷贝到文件系统(ramdisk.imag.gz)中去。我们已经拷贝了mg-samples-1.3.1/src/目录下的treeview到我们带的文件系统映像文件
 
不是用的华恒的板子的兄弟们也不用急,因为华恒只给了交叉编译环境的,为了开发方便,我们换需要搭建在PC环境下的Minigui。具体的移植搭建方法完全一样,只是用的编译工具不同,一个是gcc一个是arm-linux-gcc
为了与交叉编译环境兼容,我选择了minigui1.3.3版本
 
那么开始移植吧:
 
1.       安装Minigui
1)首先下载Minigui的软件:
http://www.minigui.com/download/libminigui-1.3.3.tar.gz   
Minigui的库文件
http://www.minigui.com/download/minigui-res-1.3.3.tar.gz 
minigui 所使用的资源,包括基本字体、图标、位图和鼠标光标     
这两个包的下载需要你在www.minigui.com    上注册过才可以下载,免费注册的,自己去下吧
http://www.minigui.com/downloads/minigui13/mde-1.3.0.tar.gz          图形界面程序
http://www.minigui.com/downloads/minigui13/mg-samples-1.3.0.tar.gz   
一些小例子
2)下载支持的库文件
这里注意的是查看你的linux里面有没有jpeg, png ,ttf ,lz这些库文件
可以利用解压缩libminigui-1.3.3下的configture进行验证:
    # tar  zxf  libminigui-1.3.3.tar.gz
    # cd libminigui-1.3.3
# ./configure                 
    注意看configure的信息,如果有:
   checking for FrameBuffer console support... yes
checking for pthread library... yes
checking for TT_FreeType_Version in -lttf... yes
checking for jpeg_std_error in -ljpeg... yes
checking for png_check_sig in -lpng... yes
   如果里面有“no”的话,不用编译了,先把相关的库装起来在编译libminigui。由于我的什么库都没有因此都要安装,下面详细介绍:
 
A:首先安装 zlib 库,这个是后面的库的编译基础。
http://www.zlib.net/zlib-1.2.3.tar.gz 
400多K,去下载吧,
  
   保存到一个目录下后(如  /minigui)
# tar zxf zlib-1.2.3.tar.gz
   #  cd  / zlib-1.2.3
#  ./configure  --shared                  编译成动态库
#  make
# make install                           安装
 
B:安装png库
# tar zxf libpng-1.0.10rc1.tar.gz
# cd libpng-1.0.10rc1
Libpng 不提供有效的 configure 脚本,所以只好自己动手改 Makefile 文件了。可以把 Scripts  下的一个 makefile拷出来自己动手改
# cp scripts/makefile.linux  Makefile  
   #  make
#  make install
 
C:安装libjpeg-6b
tar xzvf jpegsrc.v6b.tar.gz
cd jpeg-6b
.   /configure --enable-static --enable-shared --prefix=/usr       //关键这样才能生成要求的库文件
make
mkdir /usr/man/man1                //必须件这个文件夹否则安装出错
make install
 
D:安装ttf
这个比较麻烦一点。
# tar zxf  freetype-1.3.1.tar.gz       //老一套
# cd freetype-1.3.1   //进到目录里去
# mkdir –p  /opt/ libttf/extend   // 自己另外建立一个目录
# cp freetype-1.3.1/lib/*  freetype-1.3.1/lib/arch/ansi/*  libttf/  //把有用的东西拷出来
#cp freetype-1.3.1/lib/extend/*  libttf/extend/    把 extend 目录下的文件也拷出来
                                         就是拷贝到自建的目录/opt/ libttf/
注意 cp 命令不要用 –r 选项,因为会把一些没用的东西出拷出来的
 
拷贝完成了,现在来自己手动编译了
 
# cd libttf
# gcc -c -fPIC -O2 freetype.c         //不要奇怪,对,我们只要编译这一个 .c 文
//因为它包括了其它所有的 .c 文件了,你可以自己查看它的内容  
# gcc -c -fPIC -O2 -I./  extend/*.c   把 extend 下所有的 .c 文件全部编译
# gcc --shared -o libttf.so  *.o    生成最后的动态链接库,OK了
 
把编译好的东东拷贝到系统路径
 
mkdir –p /usr/local/ include/freetype1/freetype
 
cp *.h  extend/*.h   /usr/local/ include/freetype1/freetype
cp libttf.so  /usr/local /lib
 
安装库完成,哈!
 
 
3)编译libminigui-1.3.3
# tar  zxf  libminigui-1.3.3.tar.gz
    # cd libminigui-1.3.3
# ./configure                              //这是应该全是yes    
# make
# make install
4)编译安装minigui-res-1.3.3               //不会有问题的
# tar  zxf  minigui-res-1.3.3
    # cd minigui-res-1.3.3
# ./configure                               
# make
# make install
 
 
5)最后,安装 popt 库,这个库在编译 mde 程序时需要使用,不然编译没法通过 http://gd.tuwien.ac.at/utils/rpm.org/dist/rpm-4.1.x/popt-1.7.tar.gz   
#  tar zxf popt-1.7.tar.gz
# cd popt-1.7
# ./configure --enable-shared --enable-static
# make
# make install
 
6)激活FramebeBuffer
 
 这里很重要:
 # cd  /boot/grub
# vim menu.list
grub.conf其实是grub引导程序menu.lst 符号连接文件指向的引导菜单, 再其中加
title MiniGUI FrameBuffer
root (hd0,0)
kernel /boot/vmlinuz-2.4.20-8 ro root="LABEL/" vga="0x0314" fb:on
意思是引导标题MiniGUI FrameFuffer模式 root 所在第一IDE硬盘的第一分区做为引导分区kernel 内核的路径在/boot下名为vmlinuz-2.4.20-8的文件,ro是以只读方式挂接 root="LABEL/vga"=0x0314 意为使用800*600的分辩率,如要使用640*480分辩率自行改为vga=0x0311 使用1024*768分辩率请改为vga=0x0317 , 后面的fb:on 是关键,它就是打开内核FrameBuffer显示模式的关键参数,重新启动后你就可以看到屏幕左上角可爱的小启鹅了。
6)修改MiniGUI.cfg
MiniGUI 有两种执行方式,一个是利用qvfb开启模拟环境,他需要X图形支持,由于我的linux没有安装这些库,他们的以来关系有太复杂所以我没有选,选择了另一种更简单的方式就是在 Console 下在 Framebuffer 上执行,这种方式也带来很多麻烦,后面介绍。
 
修改 /usr/local/etc/MiniGUI.cfg 文件,如下
 
[system]
# GAL engine
gal_engine=fbcon
  //这里修改
 
# IAL engine
ial_engine=console
  //这里修改
 
mdev=/dev/mouse
mtype=none   //这里改成none,因为经常鼠标不正常
 
[fbcon]
defaultmode=800x600-16bpp       //与前面的vga=0x0314匹配
 
[qvfb]
defaultmode=640x480-16bpp    
display=0
 
重启动你的 RedHat 9 ,在出现 Grub 的时候按 E 键,在 kernel =…..      这一行的最后加入  vga=0x314  ,然后 Enter,然后在 kernel=…  这一行上按 b  就可以了,这时候可以在启动时看到一个小企鹅的图标,OK
 
7)修改默认库路径
修改你的 /etc/ld.so.conf 文件,在里面最后新加入一行 /usr/local/lib
#  ldconfig
 
8)编译例程
还记得前面让你下载的 mg-samples-1.3.0.tar.gz 这个包吧,这个就是一些例子,现在试试吧:
# tar zxf mg-samples-1.3.0.tar.gz
# ./configure
# make
# cd src
看看 src 目录下是不是已经编译出可执行文件来了
 
8)运行程序
前面说采用fbcon]的方法不好,就在这里体现了,我在这里被卡了很久。一切Minigui的程序都不能在图形界面下运行,否则会冲突早成花屏,好像没有很多人提出这个解决方法,搞的的卡了很久,也许他们都用qvfb模式了吧。
解决方法就是进入纯字符模式:
可以按 ctrl+Alt+F5(用虚拟机的兄弟注意:先把虚拟机的 参数-à热键 改成ctrl+Alt+Shift否则会冲突,不响应)
在纯字符下我们可以运行刚才编译好的程序:
# cd …./mg-sample*
# cd /src
# ./helloworld
可以看到我们的程序跑起来。

 
另外回到图形界面可以使用指令:
# init 3   (进入字符界面是  #  init5)
来回的切换非常慢,中间还要输入用户名和密码,大家可以参考别人的博客,移植qvfb模式。更方便。
http://www.minigui.org/cgi-bin/lb5000/view.cgi?forum=6&topic=5548