miniGUI安装

1.6.2是目前飞漫公司在GPL许可下发行的miniGUI最新版本,2.0.3 和1.6.9是商业增值版,分别适用于有MMU和没有MMU的处理器,用这两个个是要花¥的。

 

一.编译安装miniGUI 1.6.2
   首先要做好准备工作,去http://www.minigui.org/res.shtml下载一下压缩包:
    开发库:libminigui-str-1.6.2.tar.gz
    资源文件:minigui-res-str-1.6.tar.gz
    示例程序:mg-samples-str-1.6.2.tar.gz
    建议在qvfb中运行miniGUI程序,这样比较方便,qvfb下载地址:
http://www.minigui.com/downloads/dep-libs/qvfb-1.0.tar.gz


(1)安装minigui-res-1.6.tar.gz:MiniGUI 所使用的资源, 包括基本字体、图标、位图和鼠标光标。
安装命令:
#tar -zxf minigui-res-1.6.tar.gz
#cd minigui-res-1.6
#make install


(2)安装libminigui-1.6.2.tar.gz:MiniGUI 函数库源代码。
解压命令:
#tar -zxf libminigui-1.6.2.tar.gz
这里有一个bug,解压缩后进入libminigui-str-1.6.2/src/kernel打开init.c文件,
删除或注释掉下面这几行
#ifdef __LINUX__
else {
pthread_kill_other_threads_np ();
}
#endif
保存退出,然后回到/libminigui-str-1.6.2目录接着安装:
#cd libminigui-1.6.2
#./configure
#make
#make install


(3)把libminigui加入库搜索路径:
进入/etc/ld.so.conf.d建一个vminigui.conf,写上/usr/local/lib
可以使用命令完成:
#echo /usr/local/lib > /etc/ld.so.conf


(4)最后要把系统共享库缓存刷新,将libminigui加载上,可以使用命令
#ldconfig
这个命令执行时要花十多秒,耐心等待。当然不使用刷新命令重启系统也可以。


(5)编译示例程序
解压并编译mg-smaples-1.6.2.tar.gz:
#tar –zxf mg-smaples-1.6.2.tar.gz
#./configure
#make

如果helloworld.c 编译不过,去掉#include <mywindow.h>试一试


----------------------------------------------------
二.配置minigui
minigui在linux中有两种运行模式:fbcon和qvfb
fbcon:Frame Buffer Console
qvfb: Qt Virtual Frame Buffer
看名字就知道fbcon在控制台下运行,这种模式下你不能开linux的X图形界面,使用不方便。fbcon则是带帧缓冲的虚拟控制台,minigui程序在qvfb中运行就像我们在图形界面下的Terminal中运行命令一样。两种模式我都试过了,详细配置如下:
(1)fbcon模式
打开MiniGUI.cfg 
# gedit /usr/local/etc/MiniGUI.cfg
注意这一段:
-------------------------------------------------
[system]
# GAL engine
gal_engine=fbcon
# IAL engine
ial_engine=fbcon 
mdev=/dev/mouse
mtype=IMPS2
-------------------------------------------------
gal_engine和ial_engine的值应该设置为fbcon,minigui安装后默认设置就是这样,所以你不用改。要注意的就是鼠标的设置,
如果用的是fedora7,其中鼠标设备文件不是这里的/dev/mouse,而是/dev/input/mice,最好建一个符号链接到/dev/mouse


配置文件MiniGUI.cfg搞定后需要开启linux内核的帧缓冲支持,这个是在引导器中修改,我使用的是现在最流行的grub,修改方法:
# vim /boot/grub/menu.lst
在menu.lst中加入一个段落:
----------------------------------------------------------
title MiniGUI 1.6.2
   root (hd0,0)
   kernel /boot/vmlinuz-2.4.20-8 ro root=LABEL/ vga=0x0314 fb:on
   initrd /boot/initrd-2.4.20-8.img
----------------------------------------------------------
这里的root(hd0,0)以及kernel,initrd段需要结合你自己的系统和分区情况填写,最简单的办法是把你以前的一个linux启动项找过来对照着改,kernel项后面的vga=0x0314 fb:on是设置显示器分辨率,打开帧缓冲。
显示模式对照表:
-------------------------------------------------------
       640x480    800x600    1024x768    1280x1024
8位色   0x301      0x303       0x305       0x307
15位色   0x310      0x313       0x316       0x319
16位色   0x311      0x314       0x317       0x31A
24位色   0x312      0x315       0x318       0x31B
-------------------------------------------------------
重启系统在grub中选择title MiniGUI 1.6.2
登录后就可以运行mg-smaples-1.6.2/src中的例子了,运行一个helloworld试试效果,如果没有问题正常显示了窗口就说明一切OK了。
(2)qvfb模式
把下载回来的qvfb-1.0.tar.gz解压安装:
# tar zxf qvfb-1.0.tar.gz
# cd qvfb-1.0
# ./configure
# make
# make install
打开MiniGUI.cfg 
# gedit /usr/local/etc/MiniGUI.cfg
注意一下段落:
---------------------------------------------------
[system]
# GAL engine
gal_engine=qvfb  
# IAL engine
ial_engine=qvfb  
mdev=/dev/mouse
mtype=IMPS2
[fbcon]
defaultmode=1024x768-16bpp
[qvfb]
defaultmode=640x480-16bpp 
display=0
---------------------------------------------------
gal_engine和ial_engine的值应该设置为qvfb,minigui安装后默认设置就是fbcon,所以你要改过来。另外要注意
[qvfb]段中的defaultmode,这个是你需要使用的显示器分辨率和色深,后面设置qvfb要和这里一致,否则minigui运行时或报初始化
失败的错误。
然后就可以使用qvfb体验miniGUI了:
# qvfb &
加上&符号使qvfb进程开启后shell立即返回,否则会阻塞shell进程,需要再开一个shell才可以运行minigui程序。qvfb
运行起来后在qvfb中设置虚拟显示器分辨率:File-->Configure,注意Size和Depth要设置的同MiniGUI.cfg中的
分辨率和色深一致。
qvfb设置搞定后就可以运行mg-smaples-1.6.2/src中的例子了,运行一个helloworld试试效果,Good luck!

 

1. 启动程序时出错:
NEWGAL: Set video mode failure.
GDI: Can not initialize graphics engine!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
Video mode smaller than requested
原因:qvfb中的显示设置与MiniGUI.cfg中的显示设置不一样所致,修改成一样就可以了。
2. 启动程序时出错:GAL: Does not find matched engine.
GDI: Can not get graphics engine information!
InitGUI failure when using incore resource.
原因:在配置MiniGUI时没有选择qvfb选项或没有选择需要的位深支持,进入make menuconfig中的“GAL engine options”,选上“Native GAL engine on Linux FrameBuffer console”、“Native GAL engine on Qt Virtual FrameBuffer”和需要的位深模式(如“16BPP FB”)后重新编译即可。
3. 我自己写了一个程序,但是在编译时提示:linux:/home/work1/app # gcc -o hello hello.c -lpthread -lminigui
/usr/local/lib/libminigui.so: undefined reference to `CustomizeDesktopMenu’
/usr/local/lib/libminigui.so: undefined reference to `CustomDesktopCommand’
collect2: ld returned 1 exit status
原因:我使用的是MiniGUI-Thread(在make menuconfig中指定),程序中没有包含必须的minigui/dti.c,所以会出错。
4. /usr/local/lib/libminigui.so: undefined reference to `pthread_kill_other_threads_np’
原因:删除 MiniGUI 源代码中调用’pthread_kill_other_threads_np’这个函数
的语句。应该在 src/kernel/init.c 文件中,也可以运行 grep 找一下这个函数。
5. 运行miniGUI的例子出现以下错误,
IAL Native Engine: Can not init mouse!
IAL: Init IAL engine failure.
DESKTOP: Low level event initialization failure!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
原因:修改/usr/local/etc/MiniGui.cfg文件:
     [system]
     # GAL engine
     gal_engine=qvfb
     # IAL engine
     ial_engine=qvfb
6. freetype_font_ops问题解决方法:a.把头文件中的extern FONTOPS freetype_font_ops;改为static FONTOPS freetype_font_ops;b.安装freetype-1.3.1

 

7 cheching for Qt...configure:error: Qt(>= Qt 3.0.3)(headers and libraries)not found.please check your installation!

解决办法:使用kde 即可 不要用gnome ,或用默认的QT。。。。或编译qt时候加上-thread就可以了

 3 移植过程

1  在X86的LINUX上设置:/etc/ld.so.conf 文件,在里面最后新加入一行 /usr/local/lib

2 把PC上的/usr/local/lib 拷到X86上相同的文件夹下

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值