本帖最后由 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 (为了生成相应的qtdesigner和qvfb) 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 TMAKEDIR=$PWD/tmake 5. # export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++ 6. # export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/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中的界面了吗?我看到了~!
|