交叉編譯qt-4.4.3

交叉編譯qt-4.4.3

 

前段時間進行交叉編譯了qtopia-free-2.2.0,雖然費了很多周折,最終還是編譯成功了,但發現qt2的版本有些舊了,沒有qt4的功能強大,就有找些新版本嘗試的衝動,新版本總是要比舊版本好用吧。於是,上網查資料,後來比較順利的把qt-4.4.3的版本的編譯安裝好了,留下此文檔,以備忘,也給準備做這些事情的朋友提供一個思路。安裝時主要參考了bycore這位朋友的文章(http://blog.chinaunix.net/u1/49924/showart_667900.html),他也給了我很多有益的幫助,在此對他表示感謝。

先看看Qt的各個版本簡介:

1.什麼是QT

Qt是一個完整的C++應用程序開發框架。它包含一個類庫,和用於跨平臺開發及國際化的工具。Qt API在所有支持的平臺上都是相同的,Qt工具在這些平臺上的使用方式也一致, 因而Qt應用的開發和部署與平臺無關。

2.什麼是Qtopia

Qtopia是一個面向嵌入式Linux的全方位應用程序開發平臺,同時也是用於基於LinuxPDA(個人數字助理),智能電話(Smartphone)以及其他移動設備的用戶界面。簡單地說,Qtopia實質上是一組關於PDA和智能電話的應用程序結合,如果需要開發這類產品可以在這組程序的基礎上迅速構建出PDA或者智能電話。Qtopia實質上依賴Qt/Embedded

3.什麼是Qt/Embedded

Qt/Embedded是一個完整的自包含GUI和基於Linux的嵌入式平臺開發工具。這個開發工具的名字好像最容易混淆,當然Qt/Embedded是最熟悉的名字,好像Qtopia Core說的也是它。最近,奇趣公司又該名字了,它的新名字叫做qt-embedded-linux-xxxx,看來這個Qt/Embedded的馬甲還很多哈。

 

我的開發環境:

   【硬件】: CPUP4 2.8 內存:1G 硬盤:160G

   【操作系統】:Fedora 9 全部安裝。

   【交叉編譯器】:cross-3.4.1

   【用戶】:root

    1.編譯前的一些準備工作:

    1.1 建立目錄

/usr/local/qt  (源碼包存放的目錄)

/usr/local/arm  (交叉編譯器cross-3.4.1所在目錄,若已安裝,此處跳過。)

在終端中執行:

#mkdir /usr/local/qt

#mkdir /usr/local/arm 

1.2 下載源碼包

qt-x11-opensource-src-4.4.3.tar.gz

qt-embedded-linux-opensource-src-4.4.3.tar.gz

我編譯安裝的是qt-x11-opensource-src-4.4.3qt-embedded-linux-opensource-src-4.4.3,源碼包的下載地址是:http://www.qtopia.org.cn/ftp/mirror/ftp.trolltech.com/qt/source/

1.3 安裝交叉編譯器(已安裝cross-3.4.1的這一步驟省略!跳至1.4

1.解壓cross-3.4.1.tar.bz2

cross-3.4.1.tar.bz2複製到1.1中建立的目錄/usr/local/arm下,在終端中進行如下操作:

#cd /usr/local/arm

#tar jxvf cross-3.4.1.tar.bz2

等待解壓完成。

2.設置路徑變量

由於剛纔是在/usr/local/arm的目錄下安裝的cross-3.4.1,所以設置路徑爲:PATH=/usr/local/arm/3.4.1/bin:$PATH,然後可以查看arm-linux-gcc的版本情況,在終端中進行以下操作:

#export PATH=/usr/local/arm/3.4.1/bin:$PATH

#arm-linux-gcc -v

這樣就把交叉編譯器的地址變量設置好了,但這樣設置路徑變量的方法只在此終端中生效,對其他的終端無效,若要設置對所有用戶所有終端都有效的路徑變量,在/etc/profile 中最後一行添加“export PATH=/usr/local/arm/3.4.1/bin:$PATH”,詳見我的“Linux裏設置環境變量的方法(export PATH ”的文章(http://blog.chinaunix.net/u2/86665/showart_1669729.html)。

1編譯安裝qt-x11-opensource-src-4.4.3

qt-x11版本可以產生Qt開發工具,如designer等等,最重要的是可以得到qvfb,嵌入式的開發有了qvfb,就可以不需要實際的開發板,也可以開發Qt應程序。qt-embedded版本就是專門用於嵌入式方面的版本。

1.解壓文件

qt-x11-opensource-src-4.4.3.tar.gz複製到/root/local/qt目錄下,進行解壓,在終端中進行如下操作:

#cd /root/local/qt

#tar zxvf qt-x11-opensource-src.tar.gz

解壓完成後,得到/usr/local/qt/qt-x11-opensource-src-4.4.3目錄。下面就開始進行編譯了。

2.編譯及安裝qt-x11-opensource-src-4.4.3

進入/usr/local/qt/qt-x11-opensource-src-4.4.3目錄,進行編譯安裝。在終端中進行如下操作:

#./configure –qvfb

#make

#cd tools/qvfb

#make

#cd ../..

#make install

3.複製文件

make install完成後,會在/usr/local目錄下生成一個Trolltech目錄,形成/usr/local/Trolltech目錄,這是qt-x11-opensource-src-4.4.3安裝後所在的目錄,進入/usr/local/Trolltech會看到一個Qt-4.4.3的目錄,將/usr/local/qt/qt-x11-opensource-src-4.4.3/tools/qvfb目錄下的qvfb相關文件拷貝到/usr/local/Trolltech/Qt-4.4.3/bin目錄下,在終端中操作(確定當前目錄是/usr/local/qt/qt-x11-opensource-src-4.4.3):

#cp tools/qvfb/qvfb* /usr/local/Trolltech/Qt-4.4.3/bin

OKqt-x11-opensource-src-4.4.3就編譯安裝成功了,你就可以使用/usr/local/Trolltech/Qt-4.4.3下的Qt進行編程開發了。

1編譯及安裝qt-embedded-linux-opensource-src-4.4.3

1.解壓文件

qt-embedded-linux-opensource-src-4.4.3.tar.gz複製到/root/local/qt目錄下進行解壓,解壓完成後,得到/usr/local/qt/qt-embedded-linux-opensource-src-4.4.3目錄。將qt-embedded-linux-opensource-src-4.4.3重命名爲qt-embedded-linux-opensource-src-4.4.3-x86。再解壓一下qt-embedded-linux-opensource-src-4.4.3.tar.gz,並重命名爲qt-embedded-linux-opensource-src-4.4.3-arm,在終端中進行操作:

#cd /root/local/qt

#tar zxvf qt-embedded-linux-opensource-src.tar.gz

#mv qt-embedded-linux-opensource-src-4.4.3 qt-embedded-linux-opensource-src-4.4.3-x86

#tar zxvf qt-embedded-linux-opensource-src.tar.gz

#mv qt-embedded-linux-opensource-src-4.4.3 qt-embedded-linux-opensource-src-4.4.3-arm

這裏,qt-embedded有兩個複製:qt-embedded-linux-opensource-src-4.4.3-x86qt-embedded-linux-opensource-src-4.4.3-arm,根據他們的名字可以知道前者是適合x架構的,後者適合arm架構爲什麼需要兩個呢?如果有開發板的話,可以只編譯qt-embedded版本成arm架構的就可以了,但是很多時候用qvfb的話,開發會方便很多,所以多編譯一個x86架構的也不錯。這裏是否有些疑問,qt-x11也是適合x86結構的,這不是和qt-embedded重複了嗎?答案是這樣的,qt-embedded版本只能在嵌入式板子上面運行,編譯成x86架構的程序也只能在x86的嵌入式板子上跑。前面說過,我們需要qvfb來開發,但是qvfb只能執行x86架構的應用程序,所以需要讓qt-embedded生成關於x86的庫和其他文件。而將qt-embedded編譯成arm,又是爲什麼呢?道理很簡單,我最終的qt應用程序需要在arm架構上面運行,當然需要這方面的庫,所以編譯成arm也就順理成章了。好了,現在簡單的總結一下,首先,使用qt-x11提供的庫和開發工具開發出qt應用程序,然後使用qt-embedded關於x86庫和工具再次編譯我們開發qt應用程序,這是所得到的可執行文件就可以在qvfb上運行了,最後,使用qt-embeddeddarm庫再次編譯就可以得到在arm上能運行的可執行程序。很明顯,如果有開發板,第二步是可要可不要的(最好是要),如果沒有開發板的話,第三步也就沒必要了,這樣就不需要將qt-embedded編譯成適合arm架構的。

2.編譯及安裝qt-x11-opensource-src-4.4.3-x86

進入/usr/local/qt/qt-x11-opensource-src-4.4.3-x86目錄,進行編譯安裝。在終端中進行如下操作:

#cd /usr/local/qt/qt-x11-opensource-src-4.4.3-x86

#./configure

#make(gmake)

#make install(gmake install)

OKqt-x11-opensource-src-4.4.3-x86就編譯好了。

3.編譯及安裝qt-x11-opensource-src-4.4.3-arm

進入/usr/local/qt/qt-x11-opensource-src-4.4.3-arm目錄,進行編譯安裝。在終端中進行如下操作:

#cd /usr/local/qt/qt-x11-opensource-src-4.4.3-arm

#./configure –arch arm

#make(gmake)

#make install(gmake install)

OKqt-x11-opensource-src-4.4.3-arm也編譯好了。

注意:如果在編譯的過程中出錯,在重新make前需要先執行make clean,然後再./configure,再執行make的操作。


【原文】http://blog.chinaunix.net/uid-20776117-id-1846974.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章