Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92412248
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-05-18 13:49:27

作者:lanlamer  出自: http://www.cppblog.com


在开始介绍minigui的编译过程之前,先给出两个对本文档的说明。首先,本文档介绍的是交叉编译minigui,因此所编译出来的所有可执行文件都只能在目标板上运行,试图在编译后直接运行是得不到任何结果的,而且还会提示说不是可执行文件(elf)。其次,文档中的linux命令都采用灰色背景跟其他文字区分开来。命令中的的第一个字母>表示用户console窗口中的命令提示符,具体操作的时候请不要输入该字符。

一、编译华恒科技移植好的minigui-1.3.3库及其测试程序

执行了HHARMMX21附带的光盘中的arminst后会创建好/HHARMMX21目录,其中minigui位于/HHARMMX21/applications/minigui-free/目录下。该目录下的HHTECH.readme是编译华恒科技移植好的minigui的过程说明。

执行HHTECH.readme中的前四个步骤(如下):

Step 1:

cd /HHARMMX21/applications/minigui-free/libminigui-1.3.3

./HHTECH.inst.lib

Step 2:

cd /HHARMMX21/applications/minigui-free/mg-samples-1.3.1/

./HHTECH.compile.mg

Step 3:

cd /HHARMMX21/applications/minigui-free/minigui-res-1.3.3/

./HHTECH.insti

Step 4:

/HHARMMX21/applications/minigui-free/nfsroot

./HHTECH.reduce.lib

执行完这四步以后,minigui库已经编译和安装好了。但是mg-samples中的示例程序都是些演示某个单一控件的使用方法的小程序。使用minigui来开发的复杂一点的程序都在mde中。而华恒科技提供的说明文档中并未提到这一点。根据分析,华恒科技提供的mde无法直接编译通过,估计就是因为这样华恒科技才没有在HHTECH.readme中给出mde的编译过程。下面是我根据网络资料和对mde进行分析后实践出来的mde编译过程。

二、编译mde-1.3.0

mde的编译需要用到 popt库,因此我们需要先下载和编译popt库。我已经将libpopt库上传到实验室内部网站了,在上传下载中可以找到,文件名为popt_1.10.orig.tar.gz。

交叉编译libpopt

libpopt的编译比较简单,关键在于使用正确的交叉编译工具。

tar xvzf popt_1.10.orig.tar.gz

cd popt

>CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc ./configure --build=i686-pc-linux-gnu --host=arm-unknown-linux --prefix=/HHARMMX21/applications/minigui-free/nfsroot/ --target=arm-unknown-linux

>make

>make install

这里有两个地方容易出现问题:一是权限问题。Linux下对文件的权限有很严格的设定,因此可能会出现用户没有访问或者建立目录的权限导致无法解压缩。或者是没有权限读写 /HHARMMX21/applications/minigui-free/nfsroot而导致make install出错。另一个是交叉编译工具链的设置问题,需要通过CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc命令来指向正确的交叉编译工具链。这里我是通过分析mg-samples-1.3.1的Makefile文件而得到交叉编译工具链的名称和位置的。

如果上面命令执行无误,则/HHARMMX21/applications/minigui-free/nfsroot/lib/下有libpopt.a,libpopt.la,libpopt.so,libpopt.so.0,libpopt.so.0.0.0等几个文件,在/HHARMMX21/applications/minigui-free/nfsroot/include/下有popt.h文件。

编译mde-1.3.0

华恒科技提供的HHARMMX21附带光盘中的mde-1.3.0文件有问题,估计是其开发人员没能解决popt库的问题,所以想通过修改mde-1.3.0下的tools目录下的vcongui.c文件来屏蔽对popt库的调用,结果没有成功,却忘了恢复对mde-1.3.0源代码的修改。因此我们需要编辑vcongui.c文件来去掉对#include 的注释。

cd /HHARMMX21/applications/minigui-free/mde-1.3.0/tools/

gedit vcongui.c

将第5行由

//#include

改为

#include

也就是去掉对#include 的注释。然后回到mde-1.3.0目录下,执行./HHTECH.compile.mg编译mde.

cd /HHARMMX21/applications/minigui-free/mde-1.3.0/

./HHTECH.compile.mg

如果执行无误则成功编译了mde-1.3.0,这时可以去bomb,notebook等目录下看一下,应该已经生成了程序的可执行文件。其中mde-1.3.0下的bomb目录包含的是一个扫地雷游戏,挺好玩的。

请别忘了,所有交叉编译出来的程序必须到目标板上才能运行,也就是只能通过MAINet手持终端才能执行,在自己的电脑上是无法执行和查看效果的。
阅读(618) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~