[ZLG-ARM] qt的**不少啊

[复制链接]
2638|4
 楼主| qtopia 发表于 2009-7-4 13:04 | 显示全部楼层 |阅读模式
1.&nbsp;简介<br />QT是目前在linux上使用较广的一个图像系统。用户经常配合KDE桌面环境来使用。需要注意的是我们看到的并操作的是KDE,而不是QT。QT只是一套库函数(类库),KDE才是可执行程式.同时KDE为了其他程式方便的对其操作,也提供一套库函数(类库)。<br />在PC机上的QT是基于X11图像系统的,在嵌入设备中往往不必这么累赘,只需使用QTE(QT&nbsp;Embedded)即可包括PC平台中X11和QT库的功能。<br />另一方面,嵌入设备受许多条件的限制,桌面系统也不能直接使用PC机上已有的系统。QTOPIA就是相当于KDE的桌面系统.根据具体嵌入设备的需要能设置成phone和pocket&nbsp;pc两种。<br />2.&nbsp;准备工作<br />2.1&nbsp;目标<br />首先要明确将要干的是什么,将怎么做。<br />我们的目标非常明确??就是在自己的研发板上使用基于QTE的桌面系统QTOPIA。<br />我们的工作往往是先在PC完成以后移植到ARM平台上;先编译好QTE的库,再编译QTOPIA。因为这个系统和具体的设备有关(例如:触摸屏、时钟、电源管理设备等),所以最后还需要做设备接口的移植工作。<br /><br />2.2&nbsp;软件包<br />系统平台:RedHat&nbsp;9(完全安装)<br />qt-embedded-2.3.7.tar.gz&nbsp;(qte的库)<br />qt-x11-2.3.2.tar.gz&nbsp;(为了生成相应的qtdesigner和qvfb)<br />qtopia-free-1.7.0.tar.gz&nbsp;(qte的桌面环境程式)<br />tmake-1.11.tar.gz&nbsp;(编译时会用到)<br />e2fsprogs-1.35.tar.gz&nbsp;(只使用其中的uuid的库)<br />当下载完这些包以后我们先建立一个工作环境。假设所有软件包都下载在用户目录下,通常都是/root。<br />2.3&nbsp;环境的建立<br />#&nbsp;cd&nbsp;~<br />#&nbsp;mkdir&nbsp;x86-qtopia<br />#&nbsp;tar&nbsp;zxvf&nbsp;qt-x11-2.3.2.tar.gz<br />#&nbsp;mv&nbsp;qt-2.3.2&nbsp;qt-x11<br />#&nbsp;cd&nbsp;x86-qtopia<br />#&nbsp;tar&nbsp;zxvf&nbsp;../tmake-1.11.tar.gz<br />#&nbsp;tar&nbsp;zxvf&nbsp;../qt-embedded-2.3.7.tar.gz<br />#&nbsp;tar&nbsp;zxvf&nbsp;../qtopia-free-1.7.0.tar.gz<br />#&nbsp;tar&nbsp;zxvf&nbsp;../e2fsprogs-1.35.tar.gz<br />#&nbsp;mv&nbsp;tmake-1.11&nbsp;tmake<br />#&nbsp;mv&nbsp;qt-2.3.7/&nbsp;qt<br />#&nbsp;mv&nbsp;qtopia-free-1.7.0&nbsp;qtopia<br />#&nbsp;mv&nbsp;e2fsprogs-1.35&nbsp;e2fsprogs<br />#&nbsp;cp&nbsp;x86-qtopia&nbsp;arm-qtopia&nbsp;-rf<br />记住,用户目录下的x86-qtopia目录是PC机上编译的工作环境,arm-qtopia是arm平台的交叉编译工作环境,qt-x11是两者公用的。<br />接下来还必须编译qt-x11,主要是为了编译生成其中的qtdesigner和qvfb。qvfb程式在系统中并未安装,需要我们自己编译。&nbsp;qtdesigner是和qt库的版本是相关的,当我们使用PC机上和QTE版本不符的qtdesigner时,可能在PC机上的qt-x11能使用的控&nbsp;件在QTE上并未实现,导致应用程式编译不成功。所以,我们使用2.3版本的QTE时,必须使用相同版本的qt-x11编译生成的qtdesigner和&nbsp;qvfb。<br />#&nbsp;cd&nbsp;~/qt-x11<br />#&nbsp;export&nbsp;QTDIR=$PWD<br />#&nbsp;echo&nbsp;yes&nbsp;|&nbsp;./configure&nbsp;-static&nbsp;-no-xft&nbsp;-no-opengl&nbsp;-no-sm<br />#&nbsp;make&nbsp;-C&nbsp;src/moc<br />#&nbsp;cp&nbsp;src/moc/moc&nbsp;bin<br />#&nbsp;make&nbsp;-C&nbsp;src<br />#&nbsp;make&nbsp;-C&nbsp;tools/designer<br />#&nbsp;make&nbsp;-C&nbsp;tools/qvfb<br />#&nbsp;cp&nbsp;tools/qvfb/qvfb&nbsp;bin<br />#&nbsp;strip&nbsp;bin/uic&nbsp;bin/moc&nbsp;bin/designer&nbsp;bin/qvfb<br />#&nbsp;cp&nbsp;qt-x11/bin/*&nbsp;qt/bin&nbsp;-f<br />#&nbsp;cp&nbsp;qt-x11/bin/*&nbsp;qt/bin&nbsp;-f<br /><br />3.&nbsp;PC平台编译<br />编译之前做一下准备工作:打开一个控制台之后设置环境变量。<br />#&nbsp;cd&nbsp;~/x86-qtopia<br />#&nbsp;export&nbsp;QTDIR=$PWD/qt<br />#&nbsp;export&nbsp;QPEDIR=$PWD/qtopia<br />#&nbsp;export&nbsp;TMAKEDIR=$PWD/tmake<br />#&nbsp;export&nbsp;TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++<br />#&nbsp;export&nbsp;PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH<br />3.1&nbsp;编译QTE<br />#&nbsp;cd&nbsp;$QTDIR<br />#&nbsp;cp&nbsp;$QPEDIR/src/qt/qconfig-qpe.h&nbsp;src/tools/&nbsp;-f<br />#&nbsp;(echo&nbsp;yes&nbsp;;&nbsp;echo&nbsp;no)&nbsp;|&nbsp;./configure&nbsp;-platform&nbsp;linux-generic-g++&nbsp;&nbsp;&nbsp;-qconfig&nbsp;qpe&nbsp;-depths&nbsp;16,24,32<br />#&nbsp;make&nbsp;-C&nbsp;src&nbsp;clean<br />#&nbsp;make&nbsp;-C&nbsp;src<br />看一下$QTDIR目录下是否已有了qt的库了?<br />3.2&nbsp;编译QTOPIA<br />#&nbsp;cd&nbsp;$QPEDIR/src<br />#&nbsp;./configure<br />#&nbsp;make&nbsp;clean<br />#&nbsp;make<br />3.3&nbsp;测试QTOPIA<br />激动的时刻来了,如果这个步骤成功将意味着能做应用研发了。<br />#&nbsp;cd&nbsp;~/x86-qtopia<br />#&nbsp;mkdir&nbsp;dist<br />#&nbsp;cd&nbsp;dist<br />#&nbsp;cp&nbsp;-af&nbsp;../qt/lib/&nbsp;.<br />#&nbsp;cp&nbsp;-af&nbsp;../qtopia/apps&nbsp;.<br />#&nbsp;cp&nbsp;-af&nbsp;../qtopia/bin&nbsp;.<br />#&nbsp;cp&nbsp;-af&nbsp;../qtopia/plugins&nbsp;.<br />#&nbsp;cp&nbsp;-af&nbsp;../qtopia/i18n&nbsp;.<br />#&nbsp;cp&nbsp;-af&nbsp;../qtopia/pics&nbsp;.<br />因为Security.png有点错误,所以必须进行一下操作:<br />#&nbsp;cd&nbsp;pics<br />#&nbsp;pngtopnm&nbsp;Security.png&gta.pnm<br />#&nbsp;pnmtopng&nbsp;a.pnm&gtSecurity.png<br />因为qpe运行的时候,当前目录必须是$QTDIR/bin,所以不能在$QTDIR目录下执行bin/qpe来运行。<br />#&nbsp;export&nbsp;QTDIR=~/x86-qtopia/qt<br />#&nbsp;cd&nbsp;$QTDIR/bin<br />#&nbsp;./qvfb&nbsp;&<br />#&nbsp;./qpe&nbsp;&<br />看到qpe在qvfb中的界面了吗?我看到了~!<br />4.&nbsp;目标平台交叉编译<br />和PC机上的编译相同,打开一个控制台之后需要设置环境变量。<br />#&nbsp;cd&nbsp;~/arm-qtopia<br />#&nbsp;export&nbsp;QTDIR=$PWD/qt<br />#&nbsp;export&nbsp;QPEDIR=$PWD/qtopia<br />#&nbsp;export&nbsp;TMAKEDIR=$PWD/tmake<br />#&nbsp;export&nbsp;TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++<br />#&nbsp;export&nbsp;PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH<br />4.1&nbsp;交叉编译QT<br /><br />4.2&nbsp;交叉编译QTOPIA<br /><br />5.&nbsp;移植QT中的相关设备接口<br />5.1&nbsp;鼠标<br />5.2&nbsp;触摸屏<br />6.&nbsp;移植QTOPIA中的相关设备接口<br />6.1&nbsp;电源管理设备<br />7.&nbsp;编写QT程式并移植<br />8.&nbsp;编写QTOPIA程式并移植<br />X.&nbsp;tips<br />@&nbsp;移植的时候编译器的版本非常重要.qte-2.3.7在redhat9的3.2编译器下工作非常正常,但在Fedora4的gcc-3.4.2编译器下编&nbsp;译却不成功.根据测试,PC平台上使用gcc-3.2能顺利编译,arm平台上使用gcc-2.95.2能顺利通过(gnuarm的编译器似乎不行,用华&nbsp;恒光盘中的armv4l-unkown-linux-gcc的能编译通过)<br />@&nbsp;编译过程中会提示缺少uuid的头文件和库,下载e2fsprogs-libs-1.38.tar.gz,里面有uuid的相关代码.<br />@&nbsp;编译的时候需要指定编译器,在qt的configs目录下有许多文件,修改linux-arm-g++-*这些文件中的相关定义.例如:默认使用arm-&nbsp;linux-gcc编译器,而我使用的是GNUARM的arm-elf-gcc编译器,替换文件中所有arm-linux-前缀为arm-elf-即可.
lpc2410 发表于 2009-7-6 13:21 | 显示全部楼层

  
tmake 发表于 2009-7-9 13:32 | 显示全部楼层

qt的**不少啊

  
armqt 发表于 2009-7-24 18:14 | 显示全部楼层

继续学习qtopia中……

  
孤独行者 发表于 2009-7-25 17:57 | 显示全部楼层

继续学习中

都是介绍啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

125

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部