Notes of Ouyang

Intresting in P2P & MANET Research and development, Handle-set embedded system design and programming.

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  6 Posts :: 0 Stories :: 16 Comments :: 0 Trackbacks

常用链接

留言簿(6)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

minigui-1.3.3及其示例程序编译的详细过程

金陵书生<ouyang_njupt (at) 126.com> 2008.05.16

      在开始介绍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

  1. 交叉编译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.1Makefile文件而得到交叉编译工具链的名称和位置的。

    如果上面命令执行无误,则/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文件。

  1. 编译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 <popt.h>的注释。

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

gedit vcongui.c

将第5行由

//#include <popt.h>

改为

#include <popt.h>

也就是去掉对#include <popt.h>的注释。然后回到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手持终端才能执行,在自己的电脑上是无法执行和查看效果的。

posted on 2008-05-17 10:23 金陵书生 阅读(2417) 评论(0)  编辑 收藏 引用 所属分类: Project Experiences

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理