




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Minigui在uClinux 上的移植心得1、 下载minigui源码/download/libminigui-1.3.3.tar.gz /download/minigui-res-1.3.3.tar.gz 这两个包的下载需要你在 上注册过才可以下载,免费注册的,自己去下吧/downloads/minigui13/mde-1.3.0.tar.gz 图形界面程序/downloads/minigui13/mg-samples-1.3.0.tar.gz 一些小例子 2、 把源码文件复制到/home/liu/minigui目录下,解开源码rootlocalhost minigui#tar zxvf libminigui-1.3.3.tar.gzrootlocalhost minigui#tar zxvf minigui-res-1.3.3.tar.gzrootlocalhost minigui#tar zxvf mde-1.3.0.tar.gzrootlocalhost minigui#tar zxvf mg-samples-1.3.0.tar.gz3、 PC环境的搭建首先你需要一个 Linux 环境,我安装的是 RedHat 9.0 安装时记着选 everything ,这样可以避免到时候编译少了东西。这里搭建的环境是让 MiniGUI 在你的 PC 上可以跑起来,这样以后你开发程序就可以只在 PC 上开发,调试好,最后交叉编译一下放到板子上就行了。把 libminigui-1.3.3.tar.gz 解开user# tar zxf libminigui-1.3.3.tar.gzuser# tar zxf minigui-res-1.3.3.tar.gz 编译 libminigui ,这个是 minigui 运行所必需的库文件,必须编译成功user# cd libminigui-1.3.3user# ./configure /最简单的编译方式,让它自己去配置 ,这里采用缺省的Thread 模式而不是Lite模式,因为这种方式在 PC 机上使用最方便,后面移到板子上再改成 Lite 模式即可 注意屏幕上的输出,特别是下面几条 checking for FrameBuffer console support. yeschecking for pthread library. yeschecking for TT_FreeType_Version in -lttf. yeschecking for T1_InitLib in -lt1. nochecking for jpeg_std_error in -ljpeg. yeschecking for png_check_sig in -lpng. yes 其中 lttf lpng 必须是 yes ,不然后面你的程序肯定会有问题,如果这里不是 yes 的话,肯定是你的 Redhat 9 安装不对,告诉过你安装时选 everything ,你选了吗? 其中 ttf 库是对 TrueType 字体的支持,png 库是对 png 图形的支持,MiniGui 里都需要这两个,在后面为板子交叉编译的时候也需要这两个,不然你的程序跑不起来,切记切记。 好了,现在通过了,下面是编译了user# make 接来来就是漫长的等待了,让它慢慢的编译吧注:在make时,可能会出现如下错误::/usr/include/asm/byteorder.h:6:2: warning: #warning using private kernel header; include instead!stretch.c:265:47: missing terminating characterstretch.c:267:25: missing terminating charactermake3: * stretch.lo Error 1make3: Leaving directory /opt/st2410/libminigui-1.3.3/src/newgalmake2: * install-recursive Error 1make2: Leaving directory /opt/st2410/libminigui-1.3.3/src/newgalmake1: * install-recursive Error 1make1: Leaving directory /opt/st2410/libminigui-1.3.3/srcmake: * install-recursive Error 1解决方法: 修改stretch.c 文件,将265 line_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# make install 好了,库安装完毕,下面是安装资源Root# cd /home/liu/minigui /minigui-res-1.3.3Root# make install OK,基本的安装完成了,现在检查一下看看在你的目录 /usr/local/lib 下是不是有以下文件libmgext-1.3.so.3 - libmgext-1.3.so.3.0.0libmgext-1.3.so.3.0.0libmgext.alibmgext.lalibmgext.so - libmgext-1.3.so.3.0.0libminigui-1.3.so.3 - libminigui-1.3.so.3.0.0libminigui-1.3.so.3.0.0libminigui.alibminigui.lalibminigui.so - libminigui-1.3.so.3.0.0libvcongui-1.3.so.3 - libvcongui-1.3.so.3.0.0libvcongui-1.3.so.3.0.0libvcongui.alibvcongui.lalibvcongui.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.hconfig.h dti.c filedlg.h gdi.h minigui.h skin.h window.h 如果这里检查没有这些东西的话,那你前面的步骤肯定有问题,自己检查一下吧。 首先,修改你的 /etc/ld.so.conf 文件,在里面最后新加入一行 /usr/local/lib然后执行 Root# ldconfig OK ! Libminigui 配置在 System Wide Options 里如下: * Build MiniGUI-Lite /用 Lite 方式编译,不是Thread 方式,这里适用于 PDA Stand-Alone Use incore (built-in) resource /建议不要选这个,老有问题* Unit of timer is 10ms* Cursor support User can move window with mouse /建议别选这个,可以移动蛮烦人的* Mouse button can do double click* Build with debugging messages Trace messages of MiniGUI /不要选这个,出来的Trace太多,看不过来* Include symbol name of messages 在 GAL engine Options 里 (NEWGAL) GAL and its engines* NEWGAL engine on Linux FrameBuffer console NEWGAL engine on Qt Virtual FrameBuffer /建议不要选这个,不然老让你用qvfb NEWGAL engine on eCos LCD interface* Dummy NEWGAL engine* Have console on Linux FrameBuffer 在 IAL engine options 里 EP7211-based board ADS Graphics Client iPAQ H3600 (also H3800) MPC823 PX255B NEC VR4181 Helio Touch Panel MT T800* SMDK2410 Touch Screen uClinux Touch Screen Palm/MC68EZ328* Dummy IAL engine* Native (console) input engine- Native IAL engine subdriver options PS2 mouse IntelligentMouse (IMPS/2) mouse MS mouse MS3 mouse* GPM daemon 在 Font Option 里 * Raw bitmap font Var bitmap font /千万不要选这个,不然会出现 unreferenced vfb_Courier8x8() 之类的错误* Incore font sansserif* Incore font courier* Incore font symbol* Incore font vgas* Qt Prerendered Font* TrueType font Adobe Type1 font 在 Image Options 里 * Includes SaveBitmap-related functions PCX file support LBM/PBM file support TGA file support* GIF file support* JPG file support* PNG file support 在 Input Medthold Option 里 * IME (GB2312) support IME (GB2312) Intelligent Pinyin module /千万不要选这个,不然后面你的 mginit 程序一启动就崩溃了(Abort ,有点像 OOP 一样,显示所有的寄存器的值,然后Abort),暴不爽 在 Development Environment Option 里 (Linux) Platform(arm-linux-gcc) Compiler /注意这里(glibc) Libc /注意这里- Installation optionsPath prefix: /usr/local/arm/2.95.3/arm-linux /注意这里,我们把库装到交叉编译器的目录下- Additonal Compiler Flags CFLAGS: LDFLAGS: Root# vi /usr/local/etc/MiniGUI.cfg 在里面找到 system# GAL engine#gal_engine=fbcongal_engine=qvfb /这里修改 # IAL engine#ial_engine=consoleial_engine=qvfb /这里修改 mdev=/dev/mousemtype=IMPS2 fbcondefaultmode=1024x768-16bpp qvfbdefaultmode=640x480-16bpp /这里修改display=0 保存一下,OK了! 现在你需要安装一个 qvfb ,因为 Redhat 9 里面没有,从下面地址下载/downloads/dep-libs/qvfb-1.0.tar.gz 老方法:user# tar zxf qvfb-1.0.tar.gzuser# cd qvfb-1.0user# ./configureuser# makeuser# make install 在这个过程中如果出现 error while loading shared libraries: libqt-mt.so.3: cannot open shared object file说明你的系统少了 libqt-mt.so.3 这个库,还是回去检查一下,你安装时Redhat 时是否选了 everything ,或者在实际操作的过程中,这个库有可以被误删除掉,我就出现过,这时候你可以 google 一下 ,输入 libqt-mt.so.3 redhat 9 ,应该就可以搜到相应的 rpm 包,安装时 root# rpm i -force 你的包名 就OK了 这里有个下载地址,可以试试,我是用讯雷下载的,别的工具没试过/mirror//planetccrma/mirror/redhat/linux/planetccrma/9/en/os/i386/qt33-3.3.3-0.1.rh90.ccrma.i386.rpm 注意:在你后面的操作过程中有可能会导致 libqt-mt.so.3 丢失,这时候只要重装一下就OK了 解决了这个问题后重复安装过程user# ./configureuser# makeuser# make install OK ,环境搭建好了,下面是测试了:) 还记得前面让你下载的 mg-samples-1.3.0.tar.gz 这个包吧,这个就是一些例子,现在试试吧:)user# tar zxf mg-samples-1.3.0.tar.gzuser# ./configureuser# makeuser# cd src 看看 src 目录下是不是已经编译出可执行文件来了 现在来执行一下吧,首先把 qvfb 加到你的可执行路径中去user# cd $HOMEuser# vi .bashrc 在 .bashrc 最后面加上一句export PATH=$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 中选 File Configure 640x480 VGA 16bit ,这样看起来舒服user# cd /home/liu/minigui/mg-samples-1.3.0/srcuser# ./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_MNUecho LDFLAGS=$LDFLAGS $CONFIG_MNU替换rootlocalhost libminigui-1.3.3 make menuconfig保存退出,则生成config-mnu文件,编辑,将#!/bin/sh# Automatically generated by make menuconfig.rm config.cache config.status -fCC=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覆盖原来内容rootlocalhost libminigui-1.3.3 makerootlocalhost libminigui-1.3.3 make installrootlocalhost libminigui-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 = $(TOPDIR)/usr/local/arm-elf.rootlocalhost minigui-res-1.3.3 make install6、 交叉编译mde-1.3.0rootlocalhost minigui-res-1.3.3 cd minigui-res-1.3.3 建立dome.sh 文件 #! /bin/shCC=arm-elf-gcc CFLAGS=-I/home/liu/uClinux-040408/uClibc/include -I/usr/include -I/usr/local/arm-elf/include -Dlinux -D_linux_ -D_uClinux_ -Dunix LDFLAGS=-Wl,-elf2flt -static -L/home/liu/uClinux-040408/lib/uClibc/lib -L/home/liu/uClinux-040408/linux-2.4.x/lib -L/usr/local/arm-elf/lib -lpthread -L/usr/lib -lc -lm ./configure -prefix=/usr/local/arm-elf -target=arm-elf-linux -host=arm-elf-linux -exec-prefix=/usr/local/arm-elf -enable-static -disable-lite 执行dome.sh 文件进行配置rootlocalhost minigui-res-1.3.3 sh dome.sh 修改各子目录下的Makefile文件将LDFLAGS = -Wl,-elf2flt -static -L/home/liu/uClinux-040408/lib/uClibc/lib -L/home/liu/uClinux-040408/linux-2.4.x/lib -L/usr/local/arm-elf/lib -lpthread -L/usr/lib -lc -lm -lminiguiLIBS = -lm -lpthread lminigui替换:LDFLAGS = -Wl,-elf2flt -static -L/home/liu/uClinux-040408/lib/uClibc/lib -L/home/liu/uClinux-040408/linux-2.4.x/lib -L/usr/local/arm-elf/lib -lpthread -L/usr/lib -lc -lmLIBS = -lpthread lminigui 修改各子目录下的Makefile文件将: COMMON_SUBDIRS = notebook bomb housekeeper same russia controlpanel vacs fontdemo dlgdemo ctrldemo picview 替换: COMMON_SUBDIRS = notebook tools bomb housekeeper
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年河北省邯郸市扬帆初中学校八年级中考二模生物试题(无答案)
- 《劳动合同》模板
- 《办公室工位租赁合同》模板
- 计算机组成原理 课件 4 指令系统
- 巡视巡察培训课件
- 巡察工作培训课件
- 岩石课件科学
- 岩土检测员岗位培训课件
- 输液错误不良事件课件
- 输液泵注射泵课件
- 贸易公司合伙合同协议
- 挖机工时合同协议
- 开音节闭音节试题及答案
- 部编人教版小学一年级上册道德与法治全册教学设计
- 预防脊柱弯曲异常教案
- 辅导机构创业路演
- 2025年穿脱隔离衣的试题及答案
- 2025年移动初级解决方案经理认证理论考试指导题库-下(多选、判断题)
- 健身房卫生安全措施及服务质量提升方案
- DB14-T 1737-2024 医疗护理员培训机构服务规范
- 《混凝土砖块机:混凝土砖块机技术》课件
评论
0/150
提交评论