Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1695858
  • 博文数量: 584
  • 博客积分: 13857
  • 博客等级: 上将
  • 技术积分: 11883
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-16 09:34

分类: LINUX

2010-10-25 18:35:54

硬件和软件环境:

硬件环境:

Host:X86PC

Target:友善之臂mini2440开发板

软件环境:

Host:VMware虚拟机下的redhat linux 9.0(完全安装)

Target:arm-linux kernel:linux-2.6.13

Crosstool: arm-linux-gcc-3.4.1

准备源码包

开发库:libminigui-1.6.10.tar.gz

资源文件:minigui-res-1.6.10.tar.gz

示例程序:mg-samples-str-1.6.10.tar.gz

编译安装

(1) 准备工作

在redhat linux 9.0下新建工作目录

[root@localhost /]# mkdir /minigui              //工作目录  

[root@localhost /]# mkdir /minigui/compressed /minigui/source

[root@localhost /]# cd /minigui/compressed //进入工作目录

说明:把第2步下载的源码包放到该目录中,即/minigui/compressed

2) 编译安装minigui-res-1.6.10.tar.gz

说明:minigui 所使用的资源,包括基本字体、图标、位图和鼠标光标。

[root@localhost compressed]# tar xzvf minigui-res-1.6.10.tar.gz –C ../source

[root@localhost compressed]# cd ../source/minigui-res-1.6.10

[root@localhost minigui-res-1.6.10]# make install

把生成的……/minigui/res目录下的所有文件拷贝到开发板上,其开发板上的目录如下形式/usr/local/lib/minigui/res /……,实际上这个目录与配置文件 .cfg里的相应内容的目录一致,以便找到相应的资源。

(3)支持jpeg和png

首先安装 zlib 库,这个是后面的库的编译基础。

下载到目录 /opt/mini2440 下

[user]# tar zxf zlib-1.2.3.tar.gz

由于 zlib 库的configure 脚本不支持交叉编译选项,只好自己动用了,手动临时把 gcc 修改成指向我们的交叉编译器 arm-linux-gcc

[Root]# cd /usr/bin

[Root]# mv gcc gcc_back

[Root]# ln -s /usr/local/arm/3.4.1/bin/arm-linux-gcc ./gcc

[Root]# mv ld ld_back

[Root]# ln -s /usr/local/arm/3.4.1/bin/arm-linux-ld ./ld
OK ,修改完成后回到 /opt/mini2410/zlib-1.2.3 目录下

[user]#  ./configure --prefix=/usr/local/arm/3.4.1/arm-linux/ --shared 

注意:这里配置指向 /usr/local/arm/3.4.1/arm-linux/ 目录,会自动安装在 /usr/local/arm/3.4.1/arm-linux/ [include,lib] 目录下,千万不要装错目录了,不然后面 会找不到这个库的

[user]#  make

[Root]# make install

安装完后检查一下目录 /usr/local/arm/3.4.1/arm-linux/ [include,lib] ,假如 include 中没有 zlib.h 之类的头文件,lib 中没有 libz.so.1.2.3 ,那就自己手动拷到

这些目录下去,记着拷的时候把所有的 *.h 都需要拷过去,在拷库的时候用 cp –a libz. /…./lib 就行,要用上 –a 选项

记着把刚才改过的 gcc 再改回去,不然后面会出错的!!!!!

安装 png 库,这个是用来显示 png 图形的,MiniGUI 里很多图都是 png 的,如果没这个库,你的 将无法正常工作,切记切记!

还是那句话,库不要用最新的,最新的容易有问题,用这个老一点的就没问题了,呵

[user]# tar zxf libpng-1.0.10rc1.tar.gz

[user]# cd libpng-1.0.10rc1

//Libpng 不提供有效的 configure 脚本,所以只好自己动手改 Makefile 文件了

[user]# cp scripts/makefile.linux Makefile //把 Scripts 下的一个 makefile 拷出来

[user]# vi Makefile // 自己动手改

CC=arm-linux-gcc //修改这里

# where "make install" puts libpng.a, libpng.so*, png.h and pngconf.h

prefix=/usr/local/arm/3.4.1/arm-linux //修改这里

# Where the zlib library and include files are located

#ZLIBLIB=/usr/local/lib

#ZLIBINC=/usr/local/include

ZLIBLIB=/usr/local/arm/3.4.1/arm-linux/lib //修改这里

ZLIBINC=/usr/local/arm/3.4.1/arm-linux/include //修改这里

好了,保存,然后去编译吧

[user]#  make

[user]# make install

如果有错误,检查你前面的步骤哪个没做对 :) 尤其是 zlib 的安装

还是前面说的,检查 /usr/local/arm/3.4.1/arm-linux/ [include,lib] 目录中有成功安装否,如果没有安装成功,那就自己把编译出来的东西拷过去。记着,*.h 和.so 的文件都要拷。

OK,现在来安装 jpeg 库

[user]# tar zxf jpegsrc.v6b.tar.gz

[user]# cd jpeg-6b

[user]# ./configure –help //可以查看它的配置选项

首先在本机上编译一下,主要是它的 configure 文件设计得有问题,得先用 gcc 编译一个 dummy.c 的文件,然后才能后面编译,不然的话就会出现 libtool 找不

到之类的错误

[user]# ./configure --enable-shared --enable-static

[user]# make

[user]# make clean

本机正常编译通过以后,[user]# make clean 清除掉,然后执行交叉编译

一般情况下用

[cdp@cdpserver jpeg-6b]$ ./configure --prefix=/usr/local/arm/3.4.1/arm-linux/ --

host=arm-linux --enable-shared --enable-static --host=arm-linux

来指定交叉编译选项,可是这里死活它不认,所以改用别的方法,如下

[user]# ./configure --prefix=/usr/local/arm/3.4.1/arm-linux/ CC=arm-linux-gcc --

enable-shared --enable-static

[user]# make

//安装前需要在 arm-linux 下建个目录,不然安装会出错

[Root]# mkdir –p /usr/local/arm/3.4.1/arm-linux/man/man1

[Root]# make install // OK 了

一样,自己去检查一下安装是否成功 :)

接下来就可以编译libminigui了

(4)安装 popt 库

PDA中的记事本程序要用到Popt,参考minigui1.3.3移植详步骤如下:

这个库在编译 mde 程序时需要使用,不然编译没法通过 :)

我是从这里下载的

[user]#  tar zxf popt-1.7.tar.gz

[user]# cd popt-1.7

[user]# ./configure --prefix=/usr/local/arm/2.95.3/arm-linux/

--host=arm-linux --enable-shared --enable-static

[user]# make

[Root]# make install

一切很顺利,搞定了。

交叉编译环境设置好了!

(5)编译安装libminigui-1.6.10.tar.gz

说明:minigui函数库源代码。

[root@localhost minigui-res-1.6.10]# cd /minigui/compressed

[root@localhost compressed]# tar xzvf libminigui-1.6.10.tar.gz –C ../source

[root@localhost compressed]# cd ../source/libminigui-1.6.10

[root@localhost libminigui-1.6.10]# ./configure --prefix=/home/ --host=arm-linux

--target=arm-linux --build=i386-linux CC=arm-linux-gcc --with-osname=linux

--with-style=classic --with-argetname=fbcon --enable-autoial --enable-commial

--enable-rbf16 --disable-vbfsupport

[root@localhost libminigui-1.6.10]# make

[root@localhost libminigui-1.6.10]# make install

把/home/lib目录下的所有库文件(注:--prefix=/home/)拷贝到开发板上的/lib目录下,把/home/etc下的 MiniGUI.cfg拷贝到开发板上的/etc目录下。

注:--disable- vbfsupport ,一定要注意这个选项,否则在开发板上运行示例程序时,提示找不到var bitmap font,实际上在开发板上的/usr/local/lib/minigui

/res/font目录下没有var bitmap font字体库,至于如何支持它,没有深究。其他选项可通过./configure –h帮助查看,根据自己的开发板及项目需要控制相应的功能。

(6)编译 PDA

[………]# arm-linux-gcc -o pda pda.c -lm -lminigui -lz-lpng -ljpeg -lpthread -lmgext
把生成的可执行文件PDA拷贝到开发板上的/usr/local/sbin目录下

(7) 配置

第一处:在开发板的/etc目录下建立ld.so.conf文件,并添加如下内容:

/usr/local/lib

/usr/lib

/lib

#实际上添加/lib就行了,目的是运行PDA的时候,能找到相应的库文件,其他两个库目录可选,我加上了它,是为了系统扩展。

第二处:修改开发板上的/etc/MiniGUI.cfg文件

用编辑器打开,更改如下内容:

[system]

# GAL engine and default options

gal_engine=fbcon

#IAL engine

ial_engine=cosole

mdev=/dev/input/mice

mtype=IMSP2

[fbcon]

Defaultmode=240x320-16bpp #我的LCD显示器是240x320像素的竖屏

与上述内容不一致的,请结合自己的开发板进行比较后,修改。

第三处:

在/etc/init.d/rcS脚本文件里添加如下内容:

/bin/ln –s /dev/vc/0 /dev/tty0

如不加,则出现如下问题:

NEWGAL>FBCON: Can''''''''''''''''t open /dev/tty0: No such file or directory

NEWGAL: Set video mode failure.

InitGUI: Can not initialize graphics engine!

注:就是使FBCON与你的FramBuffer设备关联

测试

在超级终端运行交叉编译自己修改制作的PDA,命令如下:

[………]# /usr/local/sbin/pda

或在/etc/init.d/rcS脚本文件里添加如下内容:

/usr/local/sbin/pda &

呵呵,minigui的PDA跑起来了,感觉超爽的。移植成功,MINIGUI的开源真不错,让我学 到了不少东西,支持MINIGUI!

主要参考网络文章MINIGUI移植到2440嵌入式网络博客

1.3.3 移植详解,大漠孤狼

交流邮箱:huangsihua@hqu.edu.cn

-- - 10 Mar 2009

阅读(907) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~