Minigui移植uClinuxWord文档格式.docx
- 文档编号:16936545
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:21
- 大小:27.56KB
Minigui移植uClinuxWord文档格式.docx
《Minigui移植uClinuxWord文档格式.docx》由会员分享,可在线阅读,更多相关《Minigui移植uClinuxWord文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
//把Scripts下的一个makefile拷出
打开Makefile文件,修改以下部分
CC=nios2-linux-gnu-gcc
//修改这里
#where"
makeinstall"
putslibpng.a,libpng.so*,png.handpngconf.h
prefix=/opt/nios2
//修改这里
#Wherethezliblibraryandincludefilesarelocated
#ZLIBLIB=/usr/local/lib
#ZLIBINC=/usr/local/include
ZLIBLIB=/opt/nios2/lib
ZLIBINC=/opt/nios2/include
5.安装jpeg库
首先在本机上编译一下,主要是它的configure文件设计得有问题,得先用gcc编译一个dummy.c的文件,然后才能后面编译,不然的话就会出现libtool找不到之类的错误
[user]#./configure--enable-shared--enable-static
[user]#makeclean
[user]#./configure--prefix=/opt/nios2CC=nios2-linux-gnu-gcc--enable-shared--enable-static
[root]#mkdir–p/opt/nios2/man/man1
[root]#mkdir–p/opt/nios2/bin
6.安装libttf库
这个是TrueType字体的支持库,用来显示文字的。
注意:
MiniGUI的文档说只支持1.3.1版本的ttf库,不要把版本弄错了:
)
[user]#cdfreetype-1.3.1
//进到目录里去
[user]#mkdir–plibttf/extend
//自己另外建立一个目录
[user]#cplib/*
lib/arch/ansi/*
libttf///把有用的东西拷出来
[user]#cplib/extend/*
libttf/extend/
//把extend目录下的文件也拷出来
注意cp命令不要用–r选项,因为会把一些没用的东西出拷出来的
拷贝完成了,现在来自己手动编译了
[user]#cdlibttf
[user]#nios2-linux-gnu-gcc-c-fPIC-O2freetype.c//这个.c文件包括了其它所有的.c文件
[user]#nios2-linux-gnu-gcc-c-fPIC-O2-I./
extend/*.c
//把extend下所有的.c文件全部编译
[user]#nios2-linux-gnu-gcc--shared-olibttf.so*.o
//生成最后的动态链接库
[Root]#mkdir–p/usr/local/nios2/nios2-linux/include/freetype1/freetype
[Root]#cp*.hextend/*.h/usr/local/nios2/nios2-linux/include/freetype1/freetype
[Root]#cplibttf.so
/usr/local/nios2/nios2-linux/lib
7.编译libminigui
在libminigui-1.6.10/下创建一个脚本文件buildlib-linux-nios2,输入以下内容:
#!
/bin/sh
rmconfig.cacheconfig.status-f
CC=nios2-linux-gnu-gcc\
./configure\
--prefix=/home/szh/miniGUI/nios2/target\
--build=i386-linux\
--host=nios2-unknown-linux\
--target=nios2-unknown-linux\
--enable-shared\
--enable-static\
--with-osname=linux\
--with-style=fashion\
--disable-micemoveable\
--disable-cursor\
--enable-newgal\
--enable-nativegal\
--enable-galfbcon\
--enable-fblin4l\
--enable-textmode\
--enable-dummyial\
--enable-autoial\
--enable-ads7846ial\
--enable-nativeial\
--disable-qvfbial\
--disable-latin9support\
--disable-big5support\
--enable-ttfsupport\
--enable-ttfcache\
--disable-savebitmap\
--enable-jpgsupport\
--enable-pngsupport\
--disable-imegb2312\
--disable-aboutdlg\
--disable-savescreen\
--enable-videoshadow\
--enable-fixedmath\
[user]#./buildlib-linux-nios2
[user]#makeinstall
[user]#cd/home/szh/miniGUI/nios2/target
[root]#cp–alib/*/usr/local/nios2/nios2-linux/lib/
[root]#cp–ainclude/*/usr/local/nios2/nios2-linux/include/
[root]#cp–aetc/*/usr/local/nios2/nios2-linux/etc/
最后,安装popt库,这个库在编译mde程序时需要使用,不然编译没法通过:
http:
//gd.tuwien.ac.at/utils/rpm.org/dist/rpm-4.1.x/popt-1.7.tar.gz
我是从这里下载的
[user]#
tarzxfpopt-1.7.tar.gz
[user]#cdpopt-1.7
[user]#./configure--prefix=/usr/local/arm/2.95.3/arm-linux/--host=arm-linux--enable-shared--enable-static
[user]#make
[Root]#makeinstall
一切很顺利,搞定了。
交叉编译环境设置好了!
OK,下面是把minigui移植到你的板子上去了。
我在/opt目录下建立了一个rootfs目录,即/opt/rootfs
,用来建立我的嵌入式系统的根目录,现在我需要把minigui的库文件放到里面去,
建立目录
[Root]#mkdir–p/opt/rootfs/usr/local/[lib,etc]
把/usr/local/arm/2.95.3/arm-linux/lib中相应的库拷到/opt/rootfs/usr/local/lib目录下去
下面是我拷的库文件:
libjpeg.a
libmgext-1.3.so.3
libminigui.a
libpng.so.2
libttf.a
libz.so
libjpeg.la
libmgext-1.3.so.3.0.0
libminigui.la
libpng.so.2.1.0.10rc1
libttf.so
libz.so.1
libjpeg.so
libmgext.a
libminigui.so
libpopt.a
libvcongui-1.3.so.3
libz.so.1.2.3
libjpeg.so.62
libmgext.la
libm.so
libpopt.la
libvcongui-1.3.so.3.0.0
minigui
libjpeg.so.62.0.0
libmgext.so
libm.so.6
libpopt.so
libvcongui.a
shared
libm-2.2.3.so
libminigui-1.3.so.3
libpng.a
libpopt.so.0
libvcongui.la
libm.a
libminigui-1.3.so.3.0.0
libpng.so
libpopt.so.0.0.0
libvcongui.so
其中一些.a的静态库是不需要拷过去的,我图方便,一起拷了,呵,懒人的做法
同时修改/opt/rootfs/etc/ld.so.conf,在里面最后新加入一行
/usr/local/lib
然后执行[Root]ldconfig–r/opt/rootfs
//把rootfs当成根目录,执行
OK,库文件准备完毕
下面把资源文件也拷过来,还记得吗,在前面搭建PC环境中讲过安装资源文件,它被装在了/usr/local/lib目录下,一个叫minigui的目录,我们要做的就是把它拷过来
[Root]#cp–r–a/usr/local/lib/minigui
/opt/rootfs/usr/local/
连目录一起拷过来,目录结构和主机一样
把配置文件也拷过来
[Root]#cp/usr/local/etc/MiniGUI.cfg
/opt/rootfs/usr/local/etc/
记住,保持目录结构的一致
修改MiniGUI.cfg,如下
[system]
#GALengine
gal_engine=fbcon
//这里修改
#IALengine
ial_engine=dummy
//这里修改,我不知道你会用什么触摸屏,所以就用dummy肯定不会错
mdev=/dev/touchscreen/0raw
//解摸屏,如果前面是dummy,则这里改不改无所谓
mtype=none
[fbcon]
defaultmode=240x320-16bpp
//根据你的LCD大小自己设置,设置错误minigui就启动不了
ial_engine一开始建议用dummy,先让minigui跑起来,以后再把触摸屏加进去,保证尽可能减少错误的发生
保存,退出。
OK,你的板子上的系统也搭建完毕了,现在来让真正的图形界面跑起来!
:
注意:
你Build你的嵌入式Linux内核时,在Console中一定要先上FrameBuffer,从4位色一直到16位色的支持,全选上吧,同时把VGATextOut选项勾掉,不要选它!
!
内核启动时就要激活FrameBuffer,不然minigui没法启动起来,激活的方法就是给它传内核参数vga=xxx之类的。
3.启动你的MiniGUI的图形界面
看看你的Windows操作系统,左下方是一个[开始]按钮,然后是任务条,MiniGUI也提供了类似的界面,这就是一个叫mginit的程序,它启动后就跟widnows的界面很像了,它就在mde包里面,还记得最初让你下载的那个程序包吗?
?
现在我们就来安装它!
[user]#tarzxfmde-1.3.0.tar.gz
[user]#cdmde-1.3.0
//我们先对mginit程序做一点小修改,呵
cdmginit;
vimginit.c
在297行处,把下面代码注释掉
/***************
AboutMiniGUI();
AboutMDE();
**************/
保存,退出即可。
因为我们没有触摸屏现在,没法点它的确认按钮,所以把这些About信息去掉:
好了,现在来编译吧,在mde-1.3.0目录里
[user]#./configure--prefix=/opt/rootfs/usr/local--host=arm-linux
如果你发现mginit目录下的程序没有被编译,那就说明你的libminigui配置不正确,记住,你必须是配置为Lite模式,这个程序才会被编译
[user]#makeinstall
事实上证明,makeinstall,根本没用,它什么都没做,donothing
所以还是我们自己动手来做吧,呵
[Root]#mkdir–p/opt/rootfs/usr/local/lib/shared/miniguiapps
//建立了一个我们自己的目录,好长,呵
[Root]#cp–r–a
mde-1.3.0/*
/opt/rootfs/usr/local/lib/shared/miniguiapps
直接全部拷过去,然后到/opt/rootfs/usr/local/lib/shared/miniguiapps的各个程序目录下去,比如mginit,bomb,painter之类的,把不用的.c.h.oMakefile之类的全删除掉,保留可执行文件和相应的res目录下的资源
注意,保持目录的结构,mginit.rc文件不要删了,这个对mginit程序很重要
OK,最后一步了,修改配置文件
[Root]#
vi
/opt/rootfs/linuxrc文件
一般你配置嵌入式系统的时候都会有这个文件,用来执行一些系统的初始化工作,如果没有,就在你相应的初始化脚本(例如etc/inittab)中加入下面的语句
mknod/dev/ttyp5c35
mknod/dev/ptyp5c25
cd/usr/local/lib/shared/miniguiapps/mginit
./mginit
最后执行mginit命令的方式,先进入到它所在的目录,然后再执行,千万不要只写成
/usr/local/lib/shared/miniguiapps/mginit/mginit
因为mginit执行时在“当前目录”的res文件夹下搜索显示的资源,这种写法则“当前目录”为/根目录,所以会找不到res文件夹,于是显示错误
“Cannotcreatetaskbar!
”就退出了!
如果运行时显示没有mknod命令,请检查一下你的busybox的配置:
切记切记!
好了,一切成功了,现在放到你的板子上去试试吧:
[Root]#cd/opt
[Root]#mkcramfs
rootfs
root.cramfs
制作根文件系统镜像,把root.cramfs烧到你的板子里面就OK了,启动,就可以看到minigui的图形界面启动了:
因为你的minigui是按Lite模式编译的,如果必须mginit首先运行起来,你其它的程序(比如bomb,或是helloword)才能执行,如果mginit没有运行起来你就执行helloword的话,就会显示错误
“Cannotattachsharedresource!
”
4.为
minigui开发程序
环境配好了,现在是开发自己的程序了,呵呵,写个简单的Helloword程序
/*
**$Id:
helloworld.c,v1.72003/06/1307:
15:
49weiymExp$
**
**Listing2.1
**helloworld.c:
SampleprogramforMiniGUIProgrammingGuide
**
ThefirstMiniGUIapplication.
**Copyright(C)2003FeynmanSoftware.
**License:
GPL
*/
#include<
stdio.h>
minigui/common.h>
minigui/minigui.h>
minigui/gdi.h>
minigui/window.h>
staticintHelloWinProc(HWNDhWnd,intmessage,WPARAMwParam,LPARAMlParam)
{
HDChdc;
switch(message){
caseMSG_PAINT:
hdc=BeginPaint(hWnd);
TextOut(hdc,100,100,"
Hello,world!
"
);
EndPaint(hWnd,hdc);
return0;
caseMSG_CLOSE:
DestroyMainWindow(hWnd);
PostQuitMessage(hWnd);
}
returnDefaultMainWinProc(hWnd,message,wParam,lParam);
intMiniGUIMain(intargc,constchar*argv[])
MSGMsg;
HWNDhMainWnd;
MAINWINCREATECreateInfo;
#ifdef_LITE_VERSION
SetDesktopRect(0,0,1024,768);
#endif
CreateInfo.dwstyle=WS_VISIBLE|WS_BORDER|WS_CAPTION;
CreateInfo.dwExstyle=WS_EX_NONE;
CreateInfo.spCaption="
Hello,world"
;
CreateInfo.hMenu=0;
CreateInfo.hCursor=GetSystemCursor(0);
CreateInfo.hIcon=0;
CreateInfo.MainWindowProc=HelloWinProc;
CreateInfo.lx=0;
CreateInfo.ty=0;
Cr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Minigui 移植 uClinux
![提示](https://static.bdocx.com/images/bang_tan.gif)