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

Linux下Minigui开发环境的搭建(PC+S3C2440相关推荐

  1. Linux下Java开发环境的搭建Tomcat6+jdk6+eclipse3.5.2+Myeclipse9.0+mysql5.1.47

    Tomcat6+jdk6+eclipse3.5.2+Myeclipse9.0+mysql5.1.47 1.JDK的安装:usr/java/jdk1.6.0_25 下载:jdk-6u25-linux-i ...

  2. Linux下STM32开发环境的搭建

    目录 一.概述 1.目的 2.开发环境描述 3.Eclipse构建的STM32集成开发环境结构 4.GDB / GDB Server 调试模型 二.搭建步骤 三.详细的搭建过程 1.安装eclipse ...

  3. linux 下 eclipse 开发环境的搭建

    在windows平台下开发习惯了各种ide,不得不承认ide给我们开发带来的便捷.于是希望在linux平台下也希望找到一个合适的ide.这就想起来了eclipse具有跨平台性. 那么就开始搭建环境吧. ...

  4. Linux的安装与Linux下PHP开发环境的搭建(LAMP)

    Linux的安装以及PHP环境的搭建 引言: 对于沉迷于windows数年的用户(比如笔者)来说,Linux中的红帽和utunbu虽然看起来和windows比较像,但是操作起来却是大不相同,需要一个适 ...

  5. Linux环境下Android开发环境的搭建

    本文主要介绍在Ubuntu下Android开发环境的搭建,所使用的IDE为Eclipse(Android Studio同理,且可省去配置SDK以及安装adt插件的步骤). 1.安装JDK (1)JDK ...

  6. Linux下Java开发环境搭建

    最近刚开始玩Linux,搞开发搭建环境是第一步,于是总结了这篇Linux下Java开发环境搭建的博客,记录一下我爬过的坑. 一.JDK的下载 jdk8官方下载地址:http://www.oracle. ...

  7. ubuntu 11.04下Android开发环境的搭建!

    ubuntu 11.04下Android开发环境的搭建! 1.安装JDK 首先到oracle的官网上下载linux版本的JDK,网址为:http://www.oracle.com/technetwor ...

  8. linux终端怎样ise,Linux下ISE开发环境的安装zz

    Linux下ISE开发环境的安装zz (2011-03-17 18:55:33) 标签: 杂谈 转自:http://hi.baidu.com/remygo/blog/item/6823f78b83ce ...

  9. VC下FFmpeg开发环境的搭建

    以下内容为整理的学习笔记,出自雷神:基于 FFmpeg + SDL 的视频播放器的制作 文章目录 VC下FFmpeg开发环境的搭建 1.新建VC项目 2.拷贝FFmpeg开发文件 3.配置开发文件 4 ...

最新文章

  1. python 列表有几个元素_python怎么向列表中添加多个元素
  2. JavaMail API 概述
  3. Linux基础知识:正则表达式
  4. WebService开发笔记 1 -- 利用cxf开发WebService竟然如此简单
  5. Java Review - 并发编程_抽象同步队列AQS
  6. Linux运维:如何根据端口号查看哪个应用占用?
  7. [linux]centos7下解决yum install mysql-server没有可用包
  8. dbutils API学习
  9. 用Python实现归并排序
  10. 深入理解python面向对象_转:Python3 面向对象,较为深入的两个理解
  11. Mybase到期 破解
  12. ln: failed to create symbolic link ‘/usr/bin/mysql’: File exists
  13. 7 ida pro 网盘_IDA分析iOS网络协议
  14. javascript动画系列 —— 切换图片(原生)
  15. poj 2516(最小费用最大流)
  16. mysql主从复制延迟问题的相关知识与解决方案
  17. 使用服务器出现error:cannot connect to X server
  18. 推荐1个易上手代码开源的好用的H5网页编辑工具
  19. 路由工作原理+DHCP+静态路由配置
  20. 统信桌面操作系统V20专业版(1020)正式发布

热门文章

  1. 【Android FFMPEG 开发】Android 中执行 FFMPEG 指令 ( 集成 FFmpegAndroid 框架 )
  2. 02 - Unit010:关联映射
  3. Quartz2D的内存管理
  4. 前谷歌工程团队负责人:如何打造一个完美的产品
  5. Listview 的顶部动态广告位的实现
  6. Firefox下div层被Flash遮住的解决方法
  7. C++中的union(联合体,共用体,数据变量可以共享内存,以节省内存空间)
  8. Pycharm 导入 Python 包、模块
  9. 转赋值表达式解析的流程
  10. KVM调整cpu和内存