摘要:本文主要介紹在PC機上搭建基于QT的嵌入式開發環境,其中很多源檔案都是開發闆自帶,需要相應資料的可以評論留下郵箱位址。
版本:交叉編譯工具鍊:GCC 4.7.3 【gcc-linaro-arm-linux-gnueabihf-4.7-2012.12-20121214_linux.tar.bz2】
Qt Creator:Qt Creator2.3.1【虛拟機上自己安裝】
Qt/Embedded:qt 4.8.2 【qt-everywhere-opensource-src-4.8.2.tar.gz】
作業系統:Linux3.6.9
首先:確定虛拟機上已經安裝好Qt Creator,并且有Qt X86版本(即可以在PC上編譯調試qt程式,但是不能進行交叉編譯不能在開發闆上運作),下文的步驟是筆者自己編譯成功的,可以照着搭建自己的平台環境。
步驟:
一:安裝交叉編譯工具鍊
每個開發闆都有自己對應的交叉編譯工具,是以一般都會在CD光牒給你。
$ tar -xjvfgcc-linaro-arm-linux-gnueabihf-4.7-2012.12-20121214_linux.tar.bz2
$vi ~/.bashrcexport PATH=opt/toolchain/4.4.3/arm-linux-gnueabihf-gcc/bin:$PATH
[opt/toolchain/4.4.3/arm-linux-gnueabihf-gcc
為我的目錄,自己可以根據自己的情況修改]
儲存,退出!
使新的環境變量生效$ source ~/.bashrc$arm-linux-gnueabihf-gcc
-v[列印出 GCC 版本為4.7.3 交叉編譯工具鍊安裝成功]
二:交叉編譯QT庫
根據目标闆提供的交叉編譯鍊工具對Qt4.8.2庫檔案進行配置,進入/usr/local/qt4.8.2_src/Qt_forArm/mkspecs/qws/linux-arm-g++目錄
【/usr/local/qt4.8.2_src/Qt_forArm 此目錄為你将 qt-everywhere-opensource-src-4.8.2.tar.gz解壓後存放的目錄】,
修改該目錄下的qmake.conf檔案并儲存如圖3-1所示,
标号①根據armv7-a的CPU以及cortex
A5的處理器打開了neon的優化運作指令,且使用這個編譯選項生成的目标檔案,允許在ARM和Thumb之間交叉調用;
标号②為編譯g++的指定交叉編譯工具路徑;
标号③為編譯Linux核心指定交叉編譯工具路徑。

$ cd qt-everywhere-opensource-src-4.8.3
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.7.1-arm -opensource -confirm-license-release -shared -embedded armv7
-xplatform qws/linux-arm-g++ -depths 16,18,24-fast -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng-qt-freetype -little-endian -host-little-endian -no-qt3support -no-libtiff-no-libmng -no-opengl -no-mmx -no-sse -no-sse2 -no-3dnow -no-openssl
-no-webkit-no-qvfb -no-nis -no-opengl -no-cups -no-glib -no-xcursor -no-xfixes-no-xrandr -no-xrender -no-separate-debug-info -nomake examples -nomake tools-nomake docs -lrt
$ gmake
$ gmake install
$ export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.7.1-arm/lib
其中./configure中相關關鍵配置參數說明如下:
-prefix/usr/local/Trolltech/QtEmbedded-4.7.1-arm----指定安裝目錄【版本其實是4.8.2,并不是4.7.1,大家可以根據自己的實際情況設定安裝目錄但是要保證前後一緻】
-embeddedarm----嵌入式平台架構選擇為armv7
-xplatformqws/linux-arm-g++----交叉編譯時的目标平台選擇
編譯完成後,打開Qt Creator開發環境,工具---->選項--->Qt4進行設定,在Qt版本菜單下,手動設定選擇qmake路徑。

再到工具鍊菜單下,添加交叉編譯工具鍊GCCE

如此,Qt Creator便有了兩套Qt版本,通過在建立工程的時候選擇不同的Qt版本,或對工程進行不同平台的建構便能夠實作跨平台開發和調試。
三:移植到ARM
(1)需要将usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib移植到ARM闆上相同的位置,将plugins裡的.so也移入..../QtEmbedded-4.8.5-arm/lib
(2) 對(1)中的lib/下的.so做連結
ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so
ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so.4
ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so.4.8
ln -s libQtGui.so.4.8.5 libQtGui.so
ln -s libQtGui.so.4.8.5 libQtGui.so.4
ln -s libQtGui.so.4.8.5 libQtGui.so.4.8
......
注:(1)(2) 也可以用壓縮打包整個lib,拷貝過去來實作
(3)開發闆環境變量設定
vi ~/.bashrc 檔案,加入
QTDIR=usr/local/Trolltech/QtEmbedded-4.7.1-arm
export QTDIR
PATH=$QTDIR/lib:$PATH
export PATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH