Qt Embedded開發(fā)環(huán)境搭建----詳解 - 筆記 - 張軍 - CSDN學(xué)生大本營...
一、 準(zhǔn)備工作
1. 硬件環(huán)境
A. 主機(jī):x86系列PC機(jī)。
B. 開發(fā)板:友善之臂mini2440。
C. 通訊連接:串口和USB。
2. 軟件環(huán)境
A. 主機(jī)操作系統(tǒng):VMware虛擬機(jī)下的Redhat linux 9.0(完全安裝) 。
B. 開發(fā)板操作系統(tǒng):嵌入式Linux,內(nèi)核版本為2.6.13。
C. 交叉編譯器:arm-linux-gcc-3.3.2。
D. 通訊方式:虛擬機(jī)與主機(jī)(Windows XP)使用共享文件夾通訊,主機(jī)與開發(fā)板使用DNW和Secure CRT通訊。
3. 相關(guān)說明
A. 命令:所有以#開頭的均為在shell中執(zhí)行的命令。
B. 交叉編譯器位置:/usr/local/arm/3.3.2。
C. 工作目錄:默認(rèn)為/opt/qt。
D. 腳本注釋:均放在命令下一行的圓括號(hào)內(nèi)。
4. 下載源碼包
A. 工程管理tmake-1.1.1.tar.gz,用于生成Makefile。
B. Qt/X11軟件包qt-x11-2.3.2.tar.gz,用于生成qvfb等開發(fā)工具。
C. Qt/Embedded軟件包qt-embedded-2.3.7.tar.gz,Qt/Embedded圖形庫。
D. Qt的PDA應(yīng)用框架qtopia-free-1.7.0.tar.gz,可以生成一個(gè)Qt的PDA程序。
5. 編譯前準(zhǔn)備
A. 建立工作目錄
#mkdir /root/qt
#cd /root/qt
#mkdir x86-qt
(仿真開發(fā)目錄)
#mkdir arm-qt
(交叉編譯目錄)
#cp …
(復(fù)制所有源碼包到此目錄)
B. 解壓源碼包
#cd /root/qt/
#tar zxvf tmake-1.1.1.tar.gz –C x86-qt
#tar zxvf tmake-1.1.1.tar.gz –C arm-qt
#tar zxvf qt-x11-2.3.2.tar.gz –C x86-qt
#tar zxvf qt-x11-2.3.2.tar.gz –C arm-qt
#tar zxvf qt-embedded-2.3.7.tar.gz –C x86-qt
#tar zxvf qt-embedded-2.3.7.tar.gz –C arm-qt
#tar zxvf qtopia-free-1.7.0.tar.gz –C x86-qt
#tar zxvf qtopia-free-1.7.0.tar.gz –C arm-qt
(加壓源碼包分別到兩個(gè)目錄)
#cd x86-qt
#mv tmake-1.1.1 tmake
#mv qt-x11-2.3.2 qt-x11
#mv qt-embedded-2.3.7 qt
#mv qtopia-free-1.7.0 qtopia
#cd ../arm-qt
#mv tmake-1.1.1 tmake
#mv qt-x11-2.3.2 qt-x11
#mv qt-embedded-2.3.7 qt
#mv qtopia-free-1.7.0 qtopia
(為了方便,給目錄改名)
二、 搭建Qt/Embedded仿真開發(fā)環(huán)境
1. 安裝tmake
#cd /root/qt/x86-qt
#export TMAKEDIR=$PWD/tmake
#export TMAKEPATH = $PWD/tmake/ lib/qws/linux-generic-g++
(只用注冊(cè)好tmake的環(huán)境變量皆可使用)
2. 安裝Qt/X11
#cd qt-x11
#export QTDIR=$PWD
(設(shè)置環(huán)境變量)
#./configure –static –no-xft –no-opengl –no-sm
(配置,回答yes)
#make –C /src/moc
#cp src/moc/moc bin
(編譯并復(fù)制moc工具到bin目錄)
#make –C src
(編譯Qt/X11庫)
#make –C tools/designer
#cp tools/designer/designer bin
(編譯Designer,用于可視化界面設(shè)計(jì))
#make –C tools/qvfb
#cp tools/qvfb/qvfb bin
(編譯qvfb,用于在PC機(jī)上仿真Qt程序)
3. 編譯Qt/Embedded
#export QTDIR=$PWD/qt
#export PATH=$QTDIR/bin:$TMAKEDIR/bin: $PATH
#cd qt
(設(shè)置環(huán)境變量)
#cp /qtopia/src/qt/qconfig-qpe.h src/tools/
(從Qtopia源碼中復(fù)制配置文件)
#./configure –system-jpeg –gif –system-libpng –system-zlib –platform linux-generic-g++ -qconfig qpe –depths 16,24,32
(配置Qt/Embedded圖形庫,然后回答兩個(gè)yes)
#make –C src
(編譯Qt/Embedded)
4. 編譯Qtopia
#cd ../qtopia/src
#./configure -platform linux-generic-g++
#make
5. 編寫環(huán)境變量腳本
腳本內(nèi)容如下,在/opt/x86 -qt/下保存為set-env,在編譯或者運(yùn)行Qt程序之前進(jìn)入該目錄執(zhí)行此腳本。
export QTDIR=$PWD/qt
export QPEDIR=$PWD/qtopia
export TMAKEDIR=$PWD/tmake
export TMAKEPATH=$TMAKEDIR/lib/qws/ linux-arm-g++
export PATH=$QTDIR/bin:$ QPEDIR/bin:$TMAKEDIR/bin: $PATH
三、 交叉編譯Qt/Embedded圖形庫
首先要確保我們安裝好了交叉編譯器arm-linux-gcc,可以使用如下命令測(cè)試:
#which arm-linux-gcc
(如果所顯示的arm-linux-gcc的版本和路徑與你所安裝的一致,那么就可以用它來交叉編譯Qt庫和應(yīng)用程序了。)
1. 安裝tmake
#cd /root/qt/arm-qt
#export TMAKEDIR=$PWD/tmake
#export TMAKEPATH=$PWD/tmake/lib/qws /linux-arm-g++
(設(shè)置tmake環(huán)境變量,即可直接使用)
2. 交叉編譯Qt/Embedded
#export QTDIR=$PWD/qt
#export PATH=$QTDIR/bin:$TMAKEDIR/bin: $PATH
(設(shè)置環(huán)境變量)
#cd qt
#cp ../qtopia/src/qt/qconfig-qpe.h ./src/tools
(從Qtopia源碼中復(fù)制配置文件)
#make clean
#./configure ./configure -system-jpeg -gif -system-libpng -system-zlib -platform linux-arm-g++ -qconfig qpe -depths 16,24,32
(配置,然后回答兩個(gè)yes)
# make -C src
(編譯Qt/Embeddesd)
3. 交叉編譯Qtopia
cd ../qtopia/src
./configure -platform linux-arm-g++
make
4. 編寫環(huán)境變量腳本
腳本內(nèi)容如下,在/opt/arm -qt/下保存為set-env,在編譯或者執(zhí)行Qt程序之前在該目錄執(zhí)行此腳本。
export QTDIR=$PWD/qt
export QPEDIR=$PWD/qtopia
export TMAKEDIR=$PWD/tmake
export TMAKEPATH=$TMAKEDIR/lib/qws/ linux-arm-g++
export PATH=$QTDIR/bin:$ QPEDIR/bin:$TMAKEDIR/bin: $PATH
四、 仿真Qt/Embedded應(yīng)用程序
1. 注冊(cè)環(huán)境變量
#cd/root/qt/x86-qt
#source set-env
(或者#. set-env,.和set-env之間有一個(gè)空格)
#mkdir hello
#cd hello
2. 設(shè)計(jì)界面
使用Qt/X11的可視化界面設(shè)計(jì)工具Qt Designer設(shè)計(jì)界面。
#designer hello.ui
然后設(shè)計(jì)好界面,保存并退出。
3. 生成界面代碼
使用Qt的代碼自動(dòng)生成工具uic把設(shè)計(jì)好的界面hello.ui生成相應(yīng)的c++代碼:hello.h和hello.cpp。
#uic -o hello.h hello.ui
#uic -o hello.cpp -impl hello.h hello.ui
生成的源文件中把我們?cè)O(shè)計(jì)好的界面定義為一個(gè)類,在我們的程序中使用這個(gè)類創(chuàng)建對(duì)象,并設(shè)為主控件就可以了。
4. 編寫代碼
#vi main.cpp
(編輯main.cpp,內(nèi)容如下)
#include<qapplication.h>
#include"hello.h"
//包含我們?cè)O(shè)計(jì)的界面MainWindow類的聲明
int main(int argc,char **argv)
{
QApplication app(argc,argv);
MainWindow *mainwindow=new MainWindow(0,"MainWindow");
//實(shí)例化MainWindow,MainWindow為在使用Designer設(shè)計(jì)界面時(shí)給主窗口的名稱。
app.setMainWidget(mainwindow);
//把mainwindow設(shè)定為程序的主控件,在程序執(zhí)行時(shí)就可以顯示這個(gè)控件。
mainwindow->show();
//顯示mainwindow,這樣就為我們的界面顯示做好準(zhǔn)備了。
return app.exec();
}
5. 建立工程
可以使用tmake中的progen工具產(chǎn)生一個(gè)工程模板,然后自己修改。也可以自己寫工程文件,個(gè)人覺得這樣方便,下面我們就自己寫一個(gè)吧!
#vi hello.pro
(編輯內(nèi)容如下)
TEMPLATE=app
#表明這是一個(gè)應(yīng)用程序
CONFIG+=qtopia warn_on release
#qtopia:生成qtopia應(yīng)用程序,warn_on:所有的警告全部打開,release:不帶調(diào)試信息
SOURCES=main.cpp hello.cpp
#指明工程中包含的源程序
HEADERS=hello.h
#指明源程序中包含的頭文件
TARGET=hello
#生成的程序名為hello
6. 編譯并仿真運(yùn)行程序
#tmake -o Makefile panel.pro
#make
(這樣就會(huì)在當(dāng)前目錄下生成hello可執(zhí)行文件)
#qvfb &
(執(zhí)行Qt虛擬緩沖幀,用于仿真)
#./hello –qws
(運(yùn)行編譯好的程序,在qvfb上就可以看到我們?cè)O(shè)計(jì)的界面了)
五、 交叉編譯程序
#cd /root/qt/arm-qt
#. set-env
# cp ../x86-qt/hello . -r
#cd hello
#tmake -o Makefile panel.pro
#make
(把生成的hello下載到帶有Qt/Embedded圖形庫的開發(fā)板上執(zhí)行即可)
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。