3回答

0收藏

[资料] 飞凌嵌入式教你在Linux中移植QT QTOPIA

飞凌嵌入式 飞凌嵌入式 3213 人阅读 | 3 人回复 | 2014-01-24

本帖最后由 forlinx2013 于 2014-1-24 09:10 编辑

欢迎大家来到飞凌爱板网专区,对嵌入式技术感兴趣的朋友不妨多多关注一下,我们提供了公司所有开发板的所有资料,也会更新大量技术文章,欢迎大家一块学习提高!!!


Linux中移植QT QTOPIA
Qtopia 是Trolltech 公司为采用嵌入式Linux操作系统的消费电子设备而开发的综合应用平台, Qtopia包含完整的应用层、灵活的用户界面、窗口操作系统、应用程序启动程序以及开发框架。
QT是目前在linux上使用较广的一个图形系统。用户经常配合KDE桌面环境来使用。需要注意的是我们看到的并操作的是KDE,而不是QT。QT只是一套库函数(类库),KDE才是可执行程序.同时KDE为了其他程序方便的对其操作,也提供一套库函数(类库)。
在PC机上的QT是基于X11图形系统的,在嵌入设备中往往不需要这么累赘,只需使用QTE(QT Embedded)即可包括PC平台中X11和QT库的功能。
另一方面,嵌入设备受许多条件的限制,桌面系统也不能直接使用PC机上已有的系统。QTOPIA就是相当于KDE的桌面系统.根据具体嵌入设备的需要可以配置成phone和pocket pc两种。
1、准备工作
(1) 目标
首先要明确将要干的是什么,将怎么做。
我们的目标很明确??就是在自己的开发板上使用基于QTE的桌面系统QTOPIA。
我们的工作往往是先在PC完成以后移植到ARM平台上;先编译好QTE的库,再编译QTOPIA。因为这个系统和具体的设备有关(例如:触摸屏、时钟、电源管理设备等),所以最后还需要做设备接口的移植工作。
   
(2)软件包
系统平台:RedHat Array(完全安装)
1. qt-embedded-2.3.7.tar.gz qte的库)
2. qt-x11-2.3.2.tar.gz (为了生成相应的qtdesignerqvfb
3. qtopia-free-1.7.0.tar.gz qte的桌面环境程序)
4. tmake-1.11.tar.gz (编译时会用到)
5. e2fsprogs-1.35.tar.gz (只使用其中的uuid的库)
当下载完这些包以后我们先建立一个工作环境。假设所有软件包都下载在用户目录下,通常都是/root。
(3)环境的建立
1. # cd ~  
2. # mkdir x86-qtopia  
3. # tar zxvf qt-x11-2.3.2.tar.gz  
4. # mv qt-2.3.2 qt-x11  
5. # cd x86-qtopia  
6. # tar zxvf ../tmake-1.11.tar.gz  
7. # tar zxvf ../qt-embedded-2.3.7.tar.gz  
8. # tar zxvf ../qtopia-free-1.7.0.tar.gz  
9. # tar zxvf ../e2fsprogs-1.35.tar.gz  
10. # mv tmake-1.11 tmake  
11. # mv qt-2.3.7/ qt  
12. # mv qtopia-free-1.7.0 qtopia  
13. # mv e2fsprogs-1.35 e2fsprogs  
14. # cp x86-qtopia arm-qtopia -rf
记住,用户目录下的x86-qtopia目录是PC机上编译的工作环境,arm-qtopia是arm平台的交叉编译工作环境,qt-x11是两者公用的。
接下来还必须编译qt-x11,主要是为了编译生成其中的qtdesigner和qvfb。qvfb程序在系统中并未安装,需要我们自己编译。qtdesigner是和qt库的版本是相关的,当我们使用PC机上和QTE版本不符的qtdesigner时,可能在PC机上的qt-x11能使用的控件在QTE上并未实现,导致应用程序编译不成功。所以,我们使用2.3版本的QTE时,必须使用相同版本的qt-x11编译生成的qtdesigner和qvfb。
1. # cd ~/qt-x11  
2. # export QTDIR=PWD  
3. # echo yes | ./configure -static -no-xft -no-opengl -no-sm  
4. # make -C src/moc  
5. # cp src/moc/moc bin  
6. # make -C src  
7. # make -C tools/designer  
8. # make -C tools/qvfb  
9. # cp tools/qvfb/qvfb bin  
10. # strip bin/uic bin/moc bin/designer bin/qvfb  
11. # cp qt-x11/bin/* qt/bin -f  
12. # cp qt-x11/bin/* qt/bin -f
2、PC平台编译
编译之前做一下准备工作:打开一个控制台之后设置环境变量。
1. # cd ~/x86-qtopia  
2. # export QTDIR=PWD/qt  
3. # export QPEDIR=PWD/qtopia  
4. # export TM***EDIR=PWD/tmake  
5. # export TM***EPATH=TM***EDIR/lib/qws/linux-generic-g++  
6. # export PATH=QTDIR/bin:QPEDIR/bin:TM***EDIR/bin:PATH
(1)编译QTE
1. # cd QTDIR  
2. # cp QPEDIR/src/qt/qconfig-qpe.h src/tools/ -f  
3. # (echo yes ; echo no) | ./configure -platform linux-generic-g++  -qconfig qpe -depths 16,24,32  
4. # make -C src clean  
5. # make -C src
看一下QTDIR目录下是否已经有了qt的库了?
(2)编译QTOPIA
1. # cd QPEDIR/src  
2. # ./configure  
3. # make clean  
4. # make
(3)测试QTOPIA
激动的时刻来了,如果这个步骤成功将意味着可以做应用开发了。
1. # cd ~/x86-qtopia  
2. # mkdir dist  
3. # cd dist  
4. # cp -af ../qt/lib/ .  
5. # cp -af ../qtopia/apps .  
6. # cp -af ../qtopia/bin .  
7. # cp -af ../qtopia/plugins .  
8. # cp -af ../qtopia/i18n .  
9. # cp -af ../qtopia/pics .
因为Security.png有点错误,所以必须进行一下操作:
1. # cd pics  
2. # pngtopnm Security.png>a.pnm  
3. # pnmtopng a.pnm>Security.png
因为qpe运行的时候,当前目录必须是$QTDIR/bin,所以不能在$QTDIR目录下执行bin/qpe来运行。
1. # export QTDIR=~/x86-qtopia/qt  
2. # cd QTDIR/bin  
3. # ./qvfb &  
4. # ./qpe &
看到qpe在qvfb中的界面了吗?我看到了~!


分享到:
回复

使用道具 举报

回答|共 3 个

倒序浏览

沙发

forlinx2011

发表于 2014-2-11 17:06:08 | 只看该作者

好评在哪里?                           
板凳

__Linux__

发表于 2014-3-4 08:44:45 | 只看该作者

刚写完几个简单的驱动,准备把QT也学一学的
地板

forlinx2011

发表于 2014-3-4 11:24:27 | 只看该作者

__Linux__ 发表于 2014-3-4 08:44
刚写完几个简单的驱动,准备把QT也学一学的

                                
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条