對於安裝QT,一直糾結了很久很久。。。折騰了很久很久,連續一周,一天到晚都在摸索,不停地編譯配置,不停地重做、撤銷,到目前為止還不知道問題有沒有徹底解決,先記錄一下,後續遇到問題再修正今天的文章。
我的安裝平台:
1.虛擬機VMware 7.0
2.嵌入式系統Ubuntu 10.10
2.交叉編譯工具:arm-linux-gcc-4.3.2
3.QT安裝包:
1)QT-X11-SDK簡稱做QT-X11:qt-sdk-linux-x86-opensource-2010.05.1.bin (其實就是Qt Creator !)
這是直接下載的編譯好的二進制SDK包;其實也可以下載源代碼包src然後再編譯安裝,網上有好多文章都是由源代碼包編譯後再安裝的,在NOKIA官網上4.7.2版本的沒有發現有源代碼包。但是安裝二進制文件可以節省編譯時間和空間。安裝好二進制文件之後仍需要獨立編譯QVFB。其實這個sdk包是QT Creator!一個IDE集成開發環境!可以省去你在終端中用命令行來編譯和調試!但是有時候你也許會發現用命令行更爽!
2)Qt Embedded for Linux簡稱做QTE:qt-everywhere-opensource-src-4.7.2.tar.gz是源代碼包;
說明:其中QT-X11可以產生Qt開發工具,如qmake 、designer等等,最重要的是可以得到qvfb(因為sdk中並沒有為什麼編譯好,所以qvfb的編譯安裝需要我們自己進行參見下一篇)。嵌入式的開發有了qvfb,就可以不需要實際的開發板,也可以開發Qt應用程序。QTE版本就是專門用於嵌入式開發的版本。所以我們需要分別編譯運行於X86架構和arm架構的QT!
這兩個安裝包都可以直接在xp環境下下載,下載較快,然後放到虛擬機ubuntu裡面。
下面開始安裝:
1.建立目錄
首先在/home/fengchao目錄下新建/qtenv文件夾為了文件管理方便,再在qtenv下分別建立三個文件夾:arm,x86,qtsdk;使用mkdir命令或者直接在目錄下右鍵新建。
qtsdk用於安裝QT-X11;
arm用於存放QTE的arm版本;
x86用於存放QTE的x86版本。
2.安裝QT-X11:
qt-sdk-linux-x86-opensource-2010.05.1.bin放在/qtsdk文件夾中
$ cd ~/qtenv/qtsdk
$ chmod u+x qt-sdk-linux-x86-opensource-2010.05.1.bin
$ ./qt-sdk-linux-x86-opensource-2010.05.1.bin
之後開始圖形化的安裝,像在xp環境安裝軟件一樣,然後選擇安裝目錄為/home/fengchao/qtenv/qtsdk,一路NEXT。
3.解壓QTE源代碼包
1)將源代碼包分別復制到/arm和/x86下:
直接在目錄下復制即可,不必使用命令行操作。
2)解壓縮:
$ cd qtenv/arm
$ tar xzvf qt-everywhere-opensource-src-4.7.2.tar.gz
(解壓gz文件用xzvf,解壓bz2 文件用xjvf)
$ mv qt-everywhere-opensource-src-4.7.2 arm
(把/qt-everywhere-opensource-src-4.7.2目錄下的文件放到/arm文件夾下,即改名為arm,方便輸入)
$ cd qtenv/x86
$ tar xzvf qt-everywhere-opensource-src-4.7.2.tar.gz
(解壓gz文件用xzvf,解壓bz2 文件用xjvf)
$ mv qt-everywhere-opensource-src-4.7.2 x86
(把/qt-everywhere-opensource-src-4.7.2目錄下的文件放到/x86文件夾下,即改名為x86,方便輸入)
4.解壓縮後分別針對arm平台和x86平台進行編譯配置
編譯arm版本的QT
$ cd ~/qtenv/arm
$ ./configure -prefix $HOME/qtenv/arm -embedded arm -nomake docs -nomake demo -nomake examples
$ sudo make
$ sudo make install
編譯x86版本的QT
$ cd ~/qtenv/x86
$ ./configure -prefix $HOME/qtenv/x86 -embedded x86 -nomake docs -nomake demo -nomake examples -qvfb
$ sudo make
$ sudo make install
sudo 獲得root權限,否則可能出錯。
此過程出現錯誤較多,都可以解決,要有耐性。。。
此編譯工程中,編譯arm版本的工具是arm-linux-g++、編譯x86版本的工具是g++;編譯的時候注意查看是否正確!我就犯過這樣的錯誤,把上面的編譯指令輸錯!導致後面更多的莫名其妙的錯誤!不得不重新來過!
技巧:
1)configure之後想清除重新來過,使用make confclean,再重新configure即可
2)make之後想清除重新來過,使用make clean,再make
5.最後是環境變量的設置
這個也是非常重要的一步,前面說的目錄管理,在這一步顯的非常重要了
我的處理方法是:在各文件夾下新建shell腳本文件。
1)QT-X11:
$ cd qtenv/qtsdk
$ sudo gedit setenv.sh
添加如下內容:
PATH=/home/fengchao/qtenv/qtsdk/qt/bin:$PATH
LD_LIBRARY_PATH=/home/fengchao/qtenv/qtsdk/lib:$LD_LIBRARY_PATH
export PATH
export LD_LIBRARY_PATH
保存退出,文件放在qtenv/qtsdk下!
2)x86:
$ cd qtenv/x86
$ sudo gedit setenv.sh
添加如下內容:
QTEDIR=/home/fengchao/qtenv/qtsdk/x86
PATH=/home/fengchao/qtenv/qtsdk/x86/bin:$PATH
LD_LIBRARY_PATH=/home/fengchao/qtenv/qtsdk/x86/lib:$LD_LIBRARY_PATH
export QTEDIR
export PATH
export LD_LIBRARY_PATH
保存退出文件放在qtenv/x86下!
3)arm:
$ cd qtenv/arm
$ sudo gedit setenv.sh
添加如下內容:
QTEDIR=/home/fengchao/qtenv/qtsdk/arm
PATH=/home/fengchao/qtenv/qtsdk/arm/bin:$PATH
LD_LIBRARY_PATH=/home/fengchao/qtenv/qtsdk/arm/lib:$LD_LIBRARY_PATH
export QTEDIR
export PATH
export LD_LIBRARY_PATH
保存退出文件放在qtenv/arm下!
在運行的時候分別運行對應的腳本即可,比如我們要用QT-X11:
cd /qtenv/qtsdk
source setenv.sh
然後就可以用qmake designer等工具了.
注意:通過運行這幾個shell腳本來改變環境變量。整個環境變量的改變只有在當前的終端下才有效。當打開其他終端後,必須重新執行對應的shell腳本。
對應所在的路徑,在大家的機器上可能不盡相同,領會意思就行。
6.下面如何編譯QVFB?
請參考我的下一篇文章 http://www.linuxidc.com/Linux/2011-05/36011.htm