Minigui移植uClinuxWord文档格式.docx

上传人:b****6 文档编号:16936545 上传时间:2022-11-27 格式:DOCX 页数:21 大小:27.56KB
下载 相关 举报
Minigui移植uClinuxWord文档格式.docx_第1页
第1页 / 共21页
Minigui移植uClinuxWord文档格式.docx_第2页
第2页 / 共21页
Minigui移植uClinuxWord文档格式.docx_第3页
第3页 / 共21页
Minigui移植uClinuxWord文档格式.docx_第4页
第4页 / 共21页
Minigui移植uClinuxWord文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

Minigui移植uClinuxWord文档格式.docx

《Minigui移植uClinuxWord文档格式.docx》由会员分享,可在线阅读,更多相关《Minigui移植uClinuxWord文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

Minigui移植uClinuxWord文档格式.docx

//把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

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

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1