Minigui在uClinux 上的移植心得.docx

上传人:b****3 文档编号:6317628 上传时间:2023-05-09 格式:DOCX 页数:12 大小:20.96KB
下载 相关 举报
Minigui在uClinux 上的移植心得.docx_第1页
第1页 / 共12页
Minigui在uClinux 上的移植心得.docx_第2页
第2页 / 共12页
Minigui在uClinux 上的移植心得.docx_第3页
第3页 / 共12页
Minigui在uClinux 上的移植心得.docx_第4页
第4页 / 共12页
Minigui在uClinux 上的移植心得.docx_第5页
第5页 / 共12页
Minigui在uClinux 上的移植心得.docx_第6页
第6页 / 共12页
Minigui在uClinux 上的移植心得.docx_第7页
第7页 / 共12页
Minigui在uClinux 上的移植心得.docx_第8页
第8页 / 共12页
Minigui在uClinux 上的移植心得.docx_第9页
第9页 / 共12页
Minigui在uClinux 上的移植心得.docx_第10页
第10页 / 共12页
Minigui在uClinux 上的移植心得.docx_第11页
第11页 / 共12页
Minigui在uClinux 上的移植心得.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Minigui在uClinux 上的移植心得.docx

《Minigui在uClinux 上的移植心得.docx》由会员分享,可在线阅读,更多相关《Minigui在uClinux 上的移植心得.docx(12页珍藏版)》请在冰点文库上搜索。

Minigui在uClinux 上的移植心得.docx

Minigui在uClinux上的移植心得

Minigui在uClinux上的移植心得

1、下载minigui源码

这两个包的下载需要你在上注册过才可以下载,免费注册的,自己去下吧

图形界面程序

一些小例子

2、把源码文件复制到/home/liu/minigui目录下,解开源码

[root@localhostminigui]#tarzxvflibminigui-1.3.3.tar.gz

[root@localhostminigui]#tarzxvfminigui-res-1.3.3.tar.gz

[root@localhostminigui]#tarzxvfmde-1.3.0.tar.gz

[root@localhostminigui]#tarzxvfmg-samples-1.3.0.tar.gz

3、PC环境的搭建

首先你需要一个Linux环境,我安装的是RedHat9.0 安装时记着选everything,这样可以避免到时候编译少了东西。

这里搭建的环境是让MiniGUI在你的PC上可以跑起来,这样以后你开发程序就可以只在PC上开发,调试好,最后交叉编译一下放到板子上就行了。

把libminigui-1.3.3.tar.gz解开

[user]#tar zxf libminigui-1.3.3.tar.gz

[user]#tarzxfminigui-res-1.3.3.tar.gz

编译libminigui ,这个是minigui运行所必需的库文件,必须编译成功

[user]#cdlibminigui-1.3.3

[user]#./configure        //最简单的编译方式,让它自己去配置,这里采用缺省的Thread模式而不是Lite模式,因为这种方式在PC机上使用最方便,后面移到板子上再改成Lite模式即可

注意屏幕上的输出,特别是下面几条

checkingforFrameBufferconsolesupport...yes

checkingforpthreadlibrary...yes

checkingforTT_FreeType_Versionin-lttf...yes

checkingforT1_InitLibin-lt1...no

checkingforjpeg_std_errorin-ljpeg...yes

checkingforpng_check_sigin-lpng...yes

其中–lttf –lpng 必须是yes,不然后面你的程序肯定会有问题,如果这里不是yes的话,肯定是你的Redhat9安装不对,告诉过你安装时选everything,你选了吗?

其中ttf库是对TrueType字体的支持,png库是对png图形的支持,MiniGui里都需要这两个,在后面为板子交叉编译的时候也需要这两个,不然你的程序跑不起来,切记切记。

好了,现在通过了,下面是编译了

[user]#make

接来来就是漫长的等待了,让它慢慢的编译吧

注:

在make时,可能会出现如下错误:

:

/usr/include/asm/byteorder.h:

6:

2:

warning:

#warningusingprivatekernelheader;includeinstead!

stretch.c:

265:

47:

missingterminating"character

stretch.c:

267:

25:

missingterminating"character

make[3]:

***[stretch.lo]Error1

make[3]:

Leavingdirectory`/opt/st2410/libminigui-1.3.3/src/newgal'

make[2]:

***[install-recursive]Error1

make[2]:

Leavingdirectory`/opt/st2410/libminigui-1.3.3/src/newgal'

make[1]:

***[install-recursive]Error1

make[1]:

Leavingdirectory`/opt/st2410/libminigui-1.3.3/src'

make:

***[install-recursive]Error1

解决方法:

修改stretch.c文件,将265line

__asm____volatile__("

call_copy_row

"

:

"=&D"(u1),"=&S"(u2)

:

"0"(dstp),"1"(srcp)

:

"memory");

修改为:

__asm____volatile__(

"call_copy_row"

:

"=&D"(u1),"=&S"(u2)

:

"0"(dstp),"1"(srcp)

:

"memory");

[user]# su    //切到Root用户权限下,不然安装时没法把文件写到你的/usr/local目录下

[Root]#makeinstall

好了,库安装完毕,下面是安装资源

[Root]#cd/home/liu/minigui/minigui-res-1.3.3

[Root]#makeinstall

OK,基本的安装完成了,现在检查一下

看看在你的目录 /usr/local/lib下是不是有以下文件

libmgext-1.3.so.3->libmgext-1.3.so.3.0.0

libmgext-1.3.so.3.0.0

libmgext.a

libmgext.la

libmgext.so->libmgext-1.3.so.3.0.0

libminigui-1.3.so.3->libminigui-1.3.so.3.0.0

libminigui-1.3.so.3.0.0

libminigui.a

libminigui.la

libminigui.so->libminigui-1.3.so.3.0.0

libvcongui-1.3.so.3->libvcongui-1.3.so.3.0.0

libvcongui-1.3.so.3.0.0

libvcongui.a

libvcongui.la

libvcongui.so->libvcongui-1.3.so.3.0.0

里面还有一个目录minigui,可以进到里面去看,分别为minigui/res/[bmp,cursor,icon,…..]好几个目录,里面有相应的文件

检查/usr/local/include 里面是不是多了一个minigui目录,/usr/local/include/minigui时面好多的.h文件,如下:

common.h control.h endianrw.h fixedmath.h mgext.h  mywindows.h vcongui.h

config.h dti.c   filedlg.h gdi.h    minigui.h skin.h   window.h

如果这里检查没有这些东西的话,那你前面的步骤肯定有问题,自己检查一下吧。

首先,修改你的/etc/ld.so.conf文件,在里面最后新加入一行/usr/local/lib

然后执行[Root]# ldconfig

OK!

Libminigui配置

在SystemWideOptions里如下:

[*]BuildMiniGUI-Lite    //用Lite方式编译,不是Thread方式,这里适用于PDA

[] Stand-Alone

[]Useincore(built-in)resource    //建议不要选这个,老有问题

[*]Unitoftimeris10ms

[*]Cursorsupport

[]Usercanmovewindowwithmouse //建议别选这个,可以移动蛮烦人的

[*]Mousebuttoncandodoubleclick

[*]Buildwithdebuggingmessages

[]TracemessagesofMiniGUI    //不要选这个,出来的Trace太多,看不过来

[*]Includesymbolnameofmessages

在GAL engineOptions里

(NEWGAL)GALanditsengines

[*] NEWGALengineonLinuxFrameBufferconsole

[] NEWGALengineonQtVirtualFrameBuffer  //建议不要选这个,不然老让你用qvfb

[] NEWGALengineoneCosLCDinterface

[*] DummyNEWGALengine

[*]HaveconsoleonLinuxFrameBuffer

在IALengineoptions里

[]EP7211-basedboard

[]ADSGraphicsClient

[]iPAQH3600(alsoH3800)

[]MPC823

[]PX255B

[]NECVR4181

[]HelioTouchPanel

[]MTT800

[*]SMDK2410TouchScreen

[]uClinuxTouchScreenPalm/MC68EZ328

[*]DummyIALengine

[*]Native(console)inputengine

--- NativeIALenginesubdriveroptions

[] PS2mouse

[] IntelligentMouse(IMPS/2)mouse

[] MSmouse

[] MS3mouse

[*] GPMdaemon

在FontOption里

[*]Rawbitmapfont

[]Varbitmapfont //千万不要选这个,不然会出现unreferencedvfb_Courier8x8()之类的错误

[*]Incorefontsansserif

[*]Incorefontcourier

[*]Incorefontsymbol

[*]Incorefontvgas

[*]QtPrerenderedFont

[*]TrueTypefont

[]AdobeType1font

在ImageOptions里

[*]IncludesSaveBitmap-relatedfunctions

[]PCXfilesupport

[]LBM/PBMfilesupport

[]TGAfilesupport

[*]GIFfilesupport

[*]JPGfilesupport

[*]PNGfilesupport

在InputMedtholdOption里

[*]IME(GB2312)support

[]IME(GB2312)IntelligentPinyinmodule //千万不要选这个,不然后面你的mginit程序一启动就崩溃了(Abort,有点像OOP一样,显示所有的寄存器的值,然后Abort),暴不爽

在DevelopmentEnvironmentOption里

(Linux)Platform

(arm-linux-gcc)Compiler //注意这里

(glibc)Libc      //注意这里

---Installationoptions

Pathprefix:

"/usr/local/arm/2.95.3/arm-linux" //注意这里,我们把库装到交叉编译器的目录下

---AdditonalCompilerFlags

   CFLAGS:

""

   LDFLAGS:

""

[Root]#vi/usr/local/etc/MiniGUI.cfg

在里面找到

[system]

#GALengine

#gal_engine=fbcon

gal_engine=qvfb //这里修改

#IALengine

#ial_engine=console

ial_engine=qvfb  //这里修改

mdev=/dev/mouse

mtype=IMPS2

[fbcon]

defaultmode=1024x768-16bpp

[qvfb]

defaultmode=640x480-16bpp  //这里修改

display=0

保存一下,OK了!

现在你需要安装一个qvfb,因为Redhat9里面没有,从下面地址下载

老方法:

[user]#tarzxfqvfb-1.0.tar.gz

[user]#cdqvfb-1.0

[user]#./configure

[user]#make

[user]#makeinstall

在这个过程中如果出现errorwhileloadingsharedlibraries:

libqt-mt.so.3:

cannotopensharedobjectfile

说明你的系统少了libqt-mt.so.3这个库,还是回去检查一下,你安装时Redhat时是否选了everything,或者在实际操作的过程中,这个库有可以被误删除掉,我就出现过,这时候你可以google一下,输入libqt-mt.so.3redhat9,应该就可以搜到相应的rpm包,安装时

[root]#rpm–i--force[你的包名] 就OK了 

这里有个下载地址,可以试试,我是用讯雷下载的,别的工具没试过

ftp:

//

注意:

在你后面的操作过程中有可能会导致libqt-mt.so.3丢失,这时候只要重装一下就OK了

解决了这个问题后重复安装过程

[user]#./configure

[user]#make

[user]#makeinstall

OK,环境搭建好了,下面是测试了:

还记得前面让你下载的mg-samples-1.3.0.tar.gz这个包吧,这个就是一些例子,现在试试吧:

[user]#tarzxfmg-samples-1.3.0.tar.gz

[user]#./configure

[user]#make

[user]#cdsrc

看看src目录下是不是已经编译出可执行文件来了

现在来执行一下吧,首先把qvfb加到你的可执行路径中去

[user]#cd$HOME

[user]#vi.bashrc

在.bashrc最后面加上一句

exportPATH="$PATH:

/sbin:

/usr/local/arm/2.95.3/bin:

/usr/local/bin:

/usr/local" 

保存退出,这里面有些路径是为以后用的,比如/usr/local/arm/2.95.3/bin,先加上吧:

[user]#source.bashrc //让它执行一下,当然你也可以选择重启一下电脑,效果是一样的,呵

执行例子程序:

[user]#qvfb&     //在图形界面下执行,呵,别告诉我你只在命令行工作啊:

在qvfb中选FileConfigure640x480VGA 16bit ,这样看起来舒服

[user]# cd/home/liu/minigui/mg-samples-1.3.0/src

[user]#./helloword

OK,这个时候你应该可以看到在qvfb中的执行效果了吧,记住:

一定要先运行qvfb,并且设置qvfb,然后再运行你的程序,而且qvfb每重启一次就需要重新设置一下,真麻烦

OK你的PC环境搭建完毕了,你现在可以在PC上开发你的程序,并且编译,并在qvfb 中执行,等完全验证它是正确的了,把它交叉编译一下,放到板子上去就可以了,呵呵:

4、交叉编译minigui库

修改scripts/mkconfig,找到

#echo"CFLAGS=\"$CFLAGS\"\\">>$CONFIG_MNU

#echo"LDFLAGS=\"$LDFLAGS\"\\">>$CONFIG_MNU

echo"CFLAGS=\"$CFLAGS\"\\">>$CONFIG_MNU

echo"LDFLAGS=\"$LDFLAGS\"\\">>$CONFIG_MNU

替换

[root@localhostlibminigui-1.3.3]makemenuconfig

保存退出,则生成config-mnu文件,编辑,将

#!

/bin/sh

#Automaticallygeneratedbymakemenuconfig.

rmconfig.cacheconfig.status-f

CC=arm-elf-gcc\

CFLAGS="-I/home/liu/uClinux-040408/uClibc/include-Dlinux-D__linux__-D__uClinux__-Dunix"\

LDFLAGS="-Wl,-elf2flt-static-Wl,-move-rodata-L/home/liu/uClinux-040408/lib/uClibc/lib\

-L/home/liu/uClinux-040408/linux-2.4.x/lib-L/usr/local/arm-elf/lib\

-lc-lm-lpthread"\

./configure--prefix=/usr/local/arm-elf\

--build=i686-pc-linux-gnu\

--host=arm-elf-linux\

--target=arm-elf-linux\

--disable-shared\

--disable-lite\

--disable-standalone\

--enable-incoreres\

--disable-flatstyle\

--enable-newgal\

--disable-nativegal\

--disable-galcommlcd\

--enable-galfbcon\

--enable-adsial\

--disable-micemoveable\

--disable-cursor\

--disable-fblin1r\

--enable-fblin8\

--disable-fblin16\

--disable-fblin32\

--disable-textmode\

--enable-dummyial\

--disable-mc68x328ial\

--disable-nativeial\

--disable-qvfbial\

--disable-qpfsupport\

--disable-ttfsupport\

--disable-type1support\

--disable-latin9support\

--disable-gbksupport\

--disable-big5support\

--disable-unicodesupport\

--disable-savebitmap\

--disable-imegb2312\

--disable-imegb2312py\

--disable-aboutdlg\

--disable-savescreen\

--disable-grayscreen\

--enable-tinyscreen\

--enable-video-fbcon\

--disable-video-qvfb\

--disable-nativegalqvfb\

--with-osname=uclinux

覆盖原来内容

[root@localhostlibminigui-1.3.3]make

[root@localhostlibminigui-1.3.3]makeinstall

[root@localhostlibminigui-1.3.3]ldconfig

可以进入/usr/local/arm-elf目录中,你会看到新增加了etc和lib两个文件夹,这两个文件夹就是我们刚才用arm-elf-gcc交叉编译minigui的函数库所产生的结果,以后编译在目标板中运行的应用程序时,就会对这两个文件夹里的内容进行编译,从而产生适合于在arm开发板中运行的应用程序.

5、交叉编译minigui-res-1.3.3

进入minigui-res-1.3.3文件夹内,修改config.linux,在prefix=$(TOPDIR)/usr/local/后添加我们的交叉编译安装目录arm-elf,即prefix

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2