您的位置:首页 > 运维架构 > Linux

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

2015-10-26 10:39 651 查看
花了两天时间终于把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.1和mde-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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: