Ubuntu下 嵌入式Qt開發環境的搭建 .
一、qt的版本介紹
按照不同的圖形介面來劃分,分為四個版本:
Win32版:適用於windows平臺;
X11版:適用於各種X系統的Linux和Unix平臺;
Mac版:適用於蘋果的MacOS;
Embedded版:適用於具有幀緩衝(Frame buffer)的linux平臺;
Qtopia是基於qt開發的一個軟體平臺,Qtopia是構建於Qt/E之上的一系列應用程式,在這個平臺上我們可以開發各種應用程式。2008年,TrollTech公司被Nokia收購後,Qtopia被重新命名為Qt Extended。 Nokia在推出了Qt Extended的最新版Qt Extended 4.4.3之後的2009年3月3日,決定停止Qt Extended的後續開發,轉而全心投入Qt的產品開發,並逐步會將一部分Qt Extended 的功能移植到Qt的開發框架中。
所以總的來說,QT也就三種:面向桌面的x11、面向嵌入式的Qt/E、以及面向嵌入式帶各種應用程式的Qtopia桌面系統!!!
比如是Qt的各種版本介紹:
1.qt的安裝程式(包含了QtCreator,QtAssistant)
Windows--x86--msvc2012_64_opengl :表示window平臺,msvc2012可以與VS2012進行結合使用,64位應用程式,要求電腦裝的是64位作業系統;opengl表示支援openGL的繪圖模式
Windows--x86--mingw48_opengl :window平臺下的mingw48編譯器進行編譯。
2.Qt的庫的原始碼包
可以根據需要下載原始碼包:
3.Qt 安裝包的下載
如果想下載Qt的以前版本,可以在上面網址的最下面的一欄有個Archive for old versions ,進去就可以下載qt的以前版本了。
二、嵌入式Qt開發環境的搭建
1.預備知識
嵌入式qt開發環境的安裝方法很多,qt的版本也很多。有點讓人不知所措,不知該按哪種方法去安裝。剛開始總不知其幾個版本之間的關係。現在也只知道其大概的一個關係,下面理清一下:據我所知的qt版本有:
1 、t-x11-opensource-src-4.3.2.tar.gz
2 、qt-embedded-linux-opensource-src-4.4.0-rc1.tar.bz2
3 、qt-everywhere-opensource-src-4.8. 5.tar.gz
4 、QtSdk-offline-linux-x86-v1.2.1.run
5 、qt-creator-linux-x86-opensource-2.5.0.bin
這些版本真有些讓人眼花繚亂。後經過一番的研究和請教,終於對這幾個版本之間的關係有點眉目了。
首先網上有人說安裝 1和2,就可以了,因為1可以提供Qt designer 和qvbf,然後2可以提供嵌入式編譯庫,兩者安裝後就可以搭建一個嵌入式qt開發環境了,其實沒錯,不過已經過時了,因為現在有了Qt creator。Qt creator 就包含了 Qt designer和qvbf,因此我們僅僅安裝5的版本就可以替代1的安裝。不過2也還是要安裝,不過了,像2那種版本的編譯庫現在已經有了更加齊全的庫替代,那就是3了。而4就是5的升級版了,它不僅可以包含5擁有的所有東西,而且能開發嵌入式應用程式,不過暫時還沒測試。
構建Qt/Embeded的交叉編譯環境需要3個Qt開發環境:
Qt的桌面開發環境:在linux中全安裝qt,用它編譯好的程式後,可以直接用“./”執行。
Qt/Embeded(x86)環境:在宿主機平臺模擬編譯和除錯目標機程式的環境,帶有qvfb功能,在PC機上可以模擬應用程式在arm開發板上的執行情況。用此編譯好的程式,只用“./”命令不可以執行,必須加上引數 -qvfb -qws。
Qt/Embeded(ARM)交叉編譯環境:編譯好的程式,用於在arm平臺上執行。
首先要準備好交叉編譯所需要的軟體包:
(1)arm-linux-gcc-4.4.3-20100728.tar.gz(交叉編譯環境)
(2)qt-everywhere-opensource-src-4.8.5.tar.gz(Qt的原始碼)
(3)qt-creator-linux-x86_64-opensource-2.5.2.bin(我的系統是64位,所以選擇x86_64)
(4)tslib-1.4.tar.gz(觸控式螢幕校驗工具)
2.環境的搭建
2.1 系統環境
主機作業系統:ubuntu10.04
主機編譯器:gcc4.4.3,
交叉編譯器:arm-linux-gcc-4.3.3
2.2 安裝交叉編譯器
(1)首先以root使用者登入
(2)複製arm-linux-gcc-4.3.2.tgz到根目錄下tmp資料夾裡
(3)解壓命令tar xvzf arm-linux-gcc-4.3.2 -C /
注意以上命令必須要有-C而且是大寫的後邊有個空格也要注意
(4)配置下編譯環境路徑 在控制檯下輸入 gedit /root/.bashrc 等一會出來文字編輯器後在檔案最後(最後一行)加上 下面程式碼
export PATH=/opt/FriendlyARM/toolschain/4.4.3/bin:$PATH
重新開啟一個終端,使上面的配置檔案生效;輸入命令 arm-linux-gcc -v; 如果出現下面介面,就代表交叉編譯器安裝成功,會輸出gcc的版本號;
2.3 安裝觸控式螢幕校驗工具
把tslib-1.4.tar.gz放到一個目錄下,比如/opt目錄下。接著執行命令如下:
#tar zxvf tslib-1.4.tar.gz
執行命令cd tslib,進入tslib當前目錄,接著執行命令如下:
#./autogen.sh
然後接著執行配置命令:
#./configure --prefix=/usr/local/tslib --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
最後執行編譯命令和安裝命令如下:
1. make
2. make install
如果以上步驟沒錯,則可以在/usr/local/tslib下出現我們需要的庫檔案,這些庫檔案我們移植時會用到。
解決辦法:sudo apt-get install autoconf automake libtool
2.4 安裝QtCreator
qt-creator-linux-x86_64-opensource-2.5.2.bin 拷貝到linux系統中,在終端中把路徑切換到qt-creator-linux-x86_64-opensource-2.5.2.bin所在的路徑,執行命令:./qt-creator-linux-x86_64-opensource-2.5.2.bin 就會出現圖形安裝介面;下面的安裝步驟就和我們在windows下安裝軟體差不多。
注意:下的版本要和你的作業系統相匹配,32位的系統下對應32位的應用程式;
2.5 編譯Qt庫原始碼
2.5.1 解壓
將原始碼qt-everywhere-opensource-src-4.8.5.tar.gz 進行解壓,並複製三份到/usr/local目錄下,並分別命名為qt-pc,qt-x86,qt-arm。
2.5.2 編譯PC版
進入qt-pc目錄,執行如下操作:
#./configure
# make
# make install
編譯過程中出現的問題:
出錯:Basic XLibfunctionality test failed!
這個錯誤主要是因為,XLib庫沒有安裝,所以在編譯X11平臺時,應該保證,以下命令正確執行:sudo apt-get install libx11-dev libxext-dev libxtst-dev
注意:可以使用 make confclean 命令 把以前的配置資訊清除掉,然後再重新配置。
2.5.3 編譯x86版
進入qt-x86目錄,執行如下操作:
# ./configure -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb
# make
# make install
安裝過程比較長,沒有碰到過錯誤。
編譯安裝PC版中的 qvfb:
進入qt-pc/tools/qvfb/目錄,執行如下操作:
#make
編譯完畢,將qt-pc/bin目錄下的qvfb檔案複製到/usr/local/Trolltech/QtEmbedded-4.8.5/bin目錄。
編譯qvfb時,出現瞭如下錯誤:
x11keyfaker.cpp:48:34: 致命錯誤: X11/extensions/XTest.h:沒有那個檔案或目錄
編譯中斷。make: *** [.obj/release-shared/x11keyfaker.o] 錯誤 1
解決方法:
sudo apt-get install xorg-dev
如果makefile中沒有-lXtst選項,則修改makefile 中 LIBS 選項: 新增 -lXtst選項
2.5.4 編譯ARM版
必須加上“-prefix /usr/local/Trolltech/QtEmbedded-4.8.5-arm ”引數, 不然安裝後不在QtEmbedded-4.8.5-arm資料夾下,而是覆蓋了QtEmbedded-4.8.5。
# ./configure \
-prefix /usr/local/Trolltech/QtEmbedded-4.6.3-arm \
-opensource \
-confirm-license \
-release -shared \
-embedded arm \
-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-phonon \
-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
-qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib
如果放棄配置,則使用命令:# make confclean
編譯:# make
安裝:# make install
安裝完成後,在/usr/local/Trolltech目錄中有三個資料夾:Qt-4.8.5、QtEmbedded-4.8.5、QtEmbedded-4.8.5-arm。
2.6 安裝完後
2.6.1 qvfb的測試
執行qvfb,提示瞭如下錯誤,在網上也查了很多種解決辦法,最後還是沒有解決; 有的說要重新編譯核心,並帶上引數;覺得比較麻煩,就沒有去嘗試;不過這個錯誤並不影響我們模擬模擬Qt4程式。
2.6.2 QtCreator編譯前的配置
X86的除錯編譯與除錯
(1)開啟QtCreator ,工具---->選項--->構建和執行 進行設定,在Qt版本選單下,手動設定選擇qmake路徑。
(2)開啟QtCreator 對其進行設定,點選左邊的專案,選擇執行,對其進行設定,在引數裡新增 -qws引數
(3)編譯與執行
現在終端 輸入命令:qvfb -width 800 -height 480 & 開啟虛擬緩衝端;
然後就可以在QtCreator對程式進行編譯、運行了;
執行結果如下:
由於自己沒有ARM版,現在移植的那部分還沒有做,等以後自己做的話,自己會貼上去的。
總結
由於嵌入式實驗的原因,自己想用Qt4編寫一個俄羅斯方塊的遊戲,並把它移到ARM版上;就開始了Qt的交叉編譯環境的搭建;自己足足花了4天半的時間;之前在CentOS上進行搭建的,但是出現了很多錯誤,並且這些錯誤的解決辦法網上給的都是Ubuntu的解決辦法,在第三天時,用CentOS實在搭不下去了,於是就換成了Ubuntu10.04 ,接下來雖然也遇到錯誤,但在網上也都能搜到相似的錯誤,唯有編譯qvfb時,遇到的麻煩最多。可能我們會做一件我們覺得很難得事情或者之前我們從未涉及的領域,這時我們不要做無頭的蒼蠅,到處亂撞,應該有目的去撞;心裡一定要知道完成這件事的大概流程,和需要我們擁有哪些知識,然後一步一步地去做。