您的位置:首页 > 编程语言 > Qt开发

基于mini2440的qtopia应用程序开发之一:搭建平台+友善之臂的错误分析

2014-04-24 17:46 393 查看
本文内容:

1:分析Qt、Qt/E 、qtopia的关系。

2:如何搭建qtopia开发平台。

3:分析友善之臂的错误以及基于此理解x86-qtopia和arm-qtopia.

其实搭建环境本身是个比较容易理解的过程,只不过由于Qt、Qt/E 、qtopia版本繁多,相互之间又有一

些不兼容的问题,关于这三者之间的关系,

参考:http://blog.csdn.net/hadise/archive/2010/03/14/5378378.aspx

加上网上的攻略很多,都是针对不同版本不同环境的,有些又是错的,让人一下子不知

所措。那么,就让我来理一理吧。方法有很多种,网上说得比较全,我只说友善的这种方式。

最终目的:

qtopia应用程序开发,就是说,ARM开机之后,在桌面上要有我的应用程序图标,点击后可以运行.

环境:

Fedora9

vmware6.5

mini2440开发板

arm-linux-gcc 4.3.2

方法:

A:先搭建X11平台的qt程序开发平台.

B:安装Qt/E

C:在PC平台写应基于Qt的应用程序,编译运行无错。

D:将源代码拷贝到Qt/E(qtopia)安装目录,然后根据qtopia的特点稍做修改,在X86平台编译,使用

qvfb模拟运行无错。

E:将应用程序源代码拷贝到ARM平台的Qt/E安装文件夹,编译生成可执行文件。

F:移植到板子上。

以下一条一条分析如何实现。

A:先搭建X11平台的qt程序开发平台.

针对我们的目的,其实这一步也不是必须的。如果安装Qt仅仅是为了后期的qtopia应用程序开发做代码编

写测试,也可以在WINDOWS平台做。因为Qt是夸平台的。在windows下的话,由于有VS插件这种工具,相信

做Qt开发还是比较容易的(我还没有尝试过)。

不过由于qtopia主要是针对LINUX,所以在X11平台安装qt,开发流程还是更让人能够理解。另,也可以单

纯学习LINUX QT程序设计。

我自己尝试过下载qt4.6.2安装,结果make的时候,耗费了太多时间(大概4小时),而且最终虚拟机的空

间不够用了,提示:no space left!失败。因此建议以后大家不要安装4.6版本的qt,除非你硬盘够大。

推荐安装Qt3.2,安装方法参考Qt Assistant.

或者参考http://doc.trolltech.com/3.0/install-x11.html (qt官方网站 qt3.0安装方式。qt3版本都

用这种方式安装)

B:安装Qt/E(分析友善之臂的错误以及基于此理解x86-qtopia和arm-qtopia.)

关于这个,就得说说友善的方法了。参考友善的mini2440用户手册。

友善在/opt/FriendlyARM/mini2440/这个目录下,产生了两个子目录,分别是x86-qtopia和arm-qtopia.

可以在两根目录下的build脚本中看出着两个目录的区别。



图1:/opt/FriendlyARM/mini2440/x86-qtopia/build



图2:/opt/FriendlyARM/mini2440/arm-qtopia/build

不难发现:arm-qtopia 和 x86-qtopia下build脚本的内容比,只是少了

cd ..

/bin/rm qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/lib/fonts/helvetica_*

tar xfvz fonts.tar.gz -C qtopia-2.2.0-FriendlyARM/qtopia/image

这几句。

不难发现,其实都是对qtopia-2.2.0.tar.gz解压之后安装的。

那么,这两个目录的区别到底体现在哪里呢?

我们继续看它的示例程序hello.

首先看/opt/FriendlyARM/mini2440/x86-qtopia/hello/build这个脚本的内容



图3:/opt/FriendlyARM/mini2440/x86-qtopia/hello/build

可以看出,首先执行/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv设置环境变量,然后根据 hello.pro 文件自动生成Makefile,然后make 生成可执行程序。

再看/opt/FriendlyARM/mini2440/arm-qtopia/hello/build这个脚本的内容



图4:/opt/FriendlyARM/mini2440/arm-qtopia/hello/build

看出区别所在了吧。就是qmake后面所跟的参数中,X86是linux-generic-g++,ARM是linux-arm-g++。注意到setQpeEnv这个脚本的内容基本一样,那么,着两个目录的区别难道就仅仅在这里?这个我以后再验证。有答案了再写出来。

换句话说,如果区别仅仅在这里,那么,完全没必要搞两个文件夹。只不过我在编译应用程序的时候,写脚本注意区分就行了。那么,关于qtopia平台搭建,可以使用友善的方法,也可以只产生一个目录,这个需要后期验证。

具体的安装方法在图一的build脚本中已经写明了。

C、D、E、F4各部分,在以后的文章中再讲了。

下面要说说友善的一个问题

按照友善的手册,在PC平台模拟的hello程序,运行的时候,看到qtopia的框架,但是中间是黑屏

分析这个问题有利于理清开发流程。原因及如下:

在刚开始的时候,hello目录中是没有Makefile的,这个Makefile文件,是用qmake生成的,见hello目录中build内容。因此它以来与hello.pro这个文件。

那么我们来看看hello.pro这个文件的内容。如下:



图5:/opt/FriendlyARM/mini2440/x86-qtopia/hello/hello.pro

注意到生成的可执行文件名字叫 hello ,路径在 $(QPEDIR)/bin/ 下面。顺带说一下,在arm-qtopia这个目录中的相应hello.pro的内容,跟这个一模一样。

我们再看看hello目录下的run-hello脚本内容



图6:/opt/FriendlyARM/mini2440/x86-qtopia/hello/run-hello

可以看出,在PC模拟的时候,首先调用了qvfb工具,然后设置环境变量,最后运行hello.问题就处在最后这句话了。因为run-hello的当前目录不是hello的所在目录,所以脚本找不到hello,自然就成了黑屏。

解决方法:将最后一句话改为$(QPEDIR)/bin/hello -qws!

保存,运行./run-hello ,ok!

下一步打算验证我对arm-qtopia和x86-qtopia区别的理解!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐