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

来源:互联网 发布:程序员自学之路 编辑:程序博客网 时间:2024/05/23 02:11

花了两天时间终于把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

0 0
原创粉丝点击