主题 : mini2440上qtopia应用程序开发步骤(x86-qtopia版本) 复制链接 | 浏览器收藏 | 打印
创新改变世界,技术驱动中国
级别: 论坛版主
UID: 7752
精华: 2
发帖: 55
金钱: 570 两
威望: 276 点
贡献值: 20 点
综合积分: 150 分
注册时间: 2009-07-27
最后登录: 2010-03-30
楼主  发表于: 2009-09-12 16:14

 mini2440上qtopia应用程序开发步骤(x86-qtopia版本)

管理提醒: 本帖被 hxfirefox 执行取消置顶操作(2009-10-28)
FriendlyARM在光盘中提供了开发Qtopia-2.2.0的开发环境和软件,因此只要对其中的软件好好加以利用就可以开发出能够在mini2440上运行的程序,下面我把我自己开发经历做一个交流,我相信在我们这群技术的热爱者中不乏高人和大牛,所以我也是抛砖引玉,如果有说的不对的请大家提出来,这样才能更好进步。好,闲话不多说,进入正题,我先讲讲FriendlyARM中提供的开发环境和软件的作用:
按照FriendlyARM文档安装所有软件后,可以发现mini2440文件夹下包含了两个qtopia文件夹,一个是x86-qtopia另一个是arm-qtopia,对于这两个文件夹我是这么理解的,x86-qtopia提供了我们在主机上开发qtopia的软件环境,开发过wince的人都知道SDK的重要性,这里我们也可以把x86-qtopia理解为提供给我们的SDK或者说模拟器,只不过它的功能还要大的多,你可以使用里面的工具设计图形界面编译程序,并在qvfb中运行,它的存在就是为了方便我们开发qtopia;arm-qtopia则是提供在目标机上运行软件的编译工具,但是一般地它不具有qvfb,所以这两个文件夹需要结合起来使用,才能达到最佳效果。
下面我来谈谈x86-qtopia的编程步骤,在这里我采用了比较繁琐的步骤,主要是讲一下流程,后面会提到
比较简捷的方法。
主机环境:RedHat9
编译工具:arm-linux-gcc-4.3.2
1、进入x86-qtopia,建立目标文件夹,即存放工程文件,.cpp.h文件的文件夹
2、设置开发环境,执行命令 # source qtopia-2.2.0-FriendlyARM/setQpeEnv
3、创建工程 # progen -t app -o (工程名).pro
4、进入qtopia-2.2.0-FriendlyARM/qt2/bin,启动Qt designer # ./designer,即可以进行图形界面的设计
5、将.ui文件存放在工程文件夹中
6、生成.h和.cpp文件,运用.ui文件,# uic -o *.h *.ui # uic -o *.cpp -impl *.h *.ui
7、在.h和.cpp文件中添加需要的代码
8、编写main.cpp
9、修改.pro文件,为其中的HEADERS= SOURCES= TARGET=添加文件,HEADERS指头文件,若有多个用空格分隔SOURCES为源文件,TARGET为目标文件,即最后生成的可执行文件名
10、生成Makefile
(1)查看环境变量,# echo $TMAKEPATH 查看结尾是否为/qws/linux-generic-g++
(2)修改tmake/lib/qws/linux-generic-g++/tmake.conf将TMAKE_LINK=gcc和TMAKE_SHLIB=gcc改为=g++
(3)生成Makefile # tmake -o Makefile *.pro
(4)修改Makefile 为LIBS=添加-lqtopia2 -lqtopia -lqpe
11、编译 # make
12、运行 # ./可执行文件名 -qws(不可少)
上面就是一般步骤,但是比较繁琐,个人觉得程序设计的重点应该放在对.cpp和.h文件的编写,以及调试中错误的纠正所以下面我再把常用的,也是比较方便的方法介绍下
1、进入x86-qtopia,建立工程目录
2、将编写好的.cpp .h拷贝至工程目录
3、产生工程文件 执行命令 # qmake -project
4、修改.pro工程文件 在文件最后架上TARGET=可执行文件名
5、拷贝x86-qtopia中例程hello中的脚本文件build至工程目录,并执行 # ./build,该脚本已经将设置环境变量调用相应库生成Makefile,生成可执行文件写入其中。
6、拷贝hello中的脚本文件run拷贝至工程目录,修改最后一句话将路径换成可执行文件所在工程目录即可,运行程序 # ./run
对照两种方法,会发现在下面这种方法中没有了对图形界面设计步骤,我个人认为.ui文件并不重要,没有.ui一样可以编译程序,它的出现只是方便设计者对图形界面的布局。其实对于布局完全可以不用Qt Designer,完全可以用纸和笔来代替,在设计之前,将你的想法画在纸上,并订出相应尺寸和位置,然后将其变成代码就可以了,这样自由度更大,我个人也推崇这种方法。
上面只介绍了x86上设计qtopia程序的方法,我将在后面和大家分享arm中开发qtopia的一些心得,希望我写的这些对大家能有帮助。
[ 此帖被hxfirefox在2009-09-15 07:52重新编辑 ]
这个阶段正是我事业的上升期,我怎么能走得开呢?
级别: 精灵王
UID: 3197
精华: 3
发帖: 770
金钱: 6995 两
威望: 5398 点
贡献值: 21 点
综合积分: 1600 分
注册时间: 2008-12-30
最后登录: 2010-12-31
1楼  发表于: 2009-09-12 23:43
真不错,期待下篇。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
2楼  发表于: 2009-09-13 07:52
写的很好,谢谢分享。
期待你的更多文章
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 7932
精华: 0
发帖: 6
金钱: 60 两
威望: 30 点
贡献值: 0 点
综合积分: 12 分
注册时间: 2009-08-03
最后登录: 2009-09-21
3楼  发表于: 2009-09-14 10:07
这么好的文章,不得不顶一下。
级别: 新手上路
UID: 8919
精华: 0
发帖: 9
金钱: 90 两
威望: 45 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2009-09-10
最后登录: 2009-10-21
4楼  发表于: 2009-09-19 10:18
很好,学习了! 期待下篇
级别: 侠客
UID: 5949
精华: 0
发帖: 51
金钱: 470 两
威望: 353 点
贡献值: 0 点
综合积分: 102 分
注册时间: 2009-05-14
最后登录: 2010-12-07
5楼  发表于: 2009-09-21 17:48
学习。。。支持原创。。。
级别: 新手上路
UID: 8524
精华: 0
发帖: 3
金钱: 30 两
威望: 15 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2009-08-27
最后登录: 2009-09-28
6楼  发表于: 2009-09-22 17:04
请教一下楼主,按照您说的,我第三步实现不了(3、创建工程 # progen -t app -o (工程名).pro),返回progen指令找不到,就是想请问一下,需要怎么修改path?
创新改变世界,技术驱动中国
级别: 论坛版主
UID: 7752
精华: 2
发帖: 55
金钱: 570 两
威望: 276 点
贡献值: 20 点
综合积分: 150 分
注册时间: 2009-07-27
最后登录: 2010-03-30
7楼  发表于: 2009-09-23 08:47

 回 6楼(lookahead) 的帖子

我试了一下,#progen没有问题,可以生成.pro,首先你设置了环境变量了吗?我给一个我刚刚测试过的例子
1、我在/opt/FriendlyARM/mini2440/x86-qtopia下建立一个目录test,放入测试用的.cpp.h
2、#cd test
3、运行命令#source /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv
4、# progen -t app -o test.pro
这样就可以了,你说的PATH是指什么?
最后我还是建议你用我帖子中的简便的方法,那样你就可以省很多事
级别: 新手上路
UID: 8524
精华: 0
发帖: 3
金钱: 30 两
威望: 15 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2009-08-27
最后登录: 2009-09-28
8楼  发表于: 2009-09-23 09:12

 回 7楼(hxfirefox) 的帖子

lz您好,我再次按照您的方法试了一下,还是出现了同样的问题,指令找不到。
我说的path就是这条指令的路径,也就是环境变量啦。
根据我的分析,估计是我们的setQpeEnv文件有点不同,您可以把setQpeEnv文件的内容贴一下吗?
创新改变世界,技术驱动中国
级别: 论坛版主
UID: 7752
精华: 2
发帖: 55
金钱: 570 两
威望: 276 点
贡献值: 20 点
综合积分: 150 分
注册时间: 2009-07-27
最后登录: 2010-03-30
9楼  发表于: 2009-09-23 10:08
不好意思,眼一花串行了
export QPEDIR=/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia
export QTOPIA_DEPOT_PATH=/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia
export QTDIR=/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2
export DQTDIR=/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/dqt
export TMAKEDIR=/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/tmake
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++
export PATH=$QPEDIR/bin:$DQTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QPEDIR=$QPEDIR/lib:$DQTDIR/lib:$LD_LIBRARY_PATH