近期計劃學(xué)習(xí)嵌入式編程,所以開始學(xué)習(xí)Qt,原來知道嵌入式門檻高,經(jīng)過這兩天的測試得出結(jié)論:的確不低。
滿打滿算安裝Qt已經(jīng)花了我一周的時間(還有很多朋友和我一起搞的),接下來會在花一周的時間把這些經(jīng)驗和資料整理出來,一是防止自己忘記,二十給大家有個借鑒,三是如果有更方便更簡潔的方法請網(wǎng)友一定告訴我,因為這個安裝過程是很痛苦的。
首先把安裝需要的文件全部列舉出來:
qt-x11-opensource-src-4.5.0.tar.bz2
qt-embedded-linux-opensource-src-4.5.0.tar.bz2
( 下載地址:ftp://ftp.qtsoftware.com/qt/source/ )
arm-linux-gcc-4.3.2.tgz
(我是在友善的micro2440資料光盤里得到的)
zlib-1.2.3.tar.gz
(zlib軟件包所包含的庫經(jīng)常被一些軟件的壓縮或解壓縮函數(shù)用到,所以安裝文件的時候經(jīng)常會用到,可以參考這篇文章:http://hi.baidu.com/%CB%E6%B7%E7%B0%BF%CF%E8/blog/item /15ff00a4176c73ff9152ee69.html)
我的虛擬機(jī)平臺是Vmware 7 ,Linux版本是Ubuntu 9.10 , Qt安裝的版本是4.50。
好的,下面我就開始安裝Qt嵌入式開發(fā)環(huán)境:
第一步:為了獲得比較快的更新速度,我們可以增加一些臺灣的源,同時更新一下g++編譯器和x11庫(所謂x11就是指 x window),(參考文章:http://hi.baidu.com/lastnightcode/blog/item/4dd8ab60f12c78d7e7113a24.html)
方法:
1. sudo gedit /etc/apt/sources.list
編輯你的源列表,在最后添加下面列表中的源(注意不要全部添加),復(fù)制到你的列表中,然后保存列表。
deb http://tw.archive.ubuntu.com/ubuntu/ karmic main universe restricted multiverse
deb http://tw.archive.ubuntu.com/ubuntu/ karmic-updates universe main multiverse restricted
deb http://tw.archive.ubuntu.com/ubuntu/ karmic-proposed universe main multiverse restricted
deb http://tw.archive.ubuntu.com/ubuntu/ karmic-security universe main multiverse restricted
deb http://tw.archive.ubuntu.com/ubuntu/ karmic-backports main multiverse restricted universe
deb-src http://tw.archive.ubuntu.com/ubuntu/ karmic main universe restricted multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu/ karmic-security universe main multiverse restricted
deb-src http://tw.archive.ubuntu.com/ubuntu/ karmic-updates universe main multiverse restricted
deb-src http://tw.archive.ubuntu.com/ubuntu/ karmic-proposed universe main multiverse restricted
deb-src http://tw.archive.ubuntu.com/ubuntu/ karmic-backports universe main multiverse restricted
2. sudo aptitude update 更新源列表信息
3. 更新g++和libx11
sudo apt-get install libc6-dev g++ gcc
sudo apt-get install libx11-dev
第二步:更新你的系統(tǒng)的更新管理器
方法:系統(tǒng) -- 系統(tǒng)管理 -- 跟新管理器
第三步:安裝arm-linux-gcc-4.3.2.tgz
1,我們把a(bǔ)rm-linux-gcc-4.3.2.tgz文件放到了home目錄下,然后切換到相應(yīng)目錄
2, # sudo tar xvzf arm-linux-gcc-4.3.2.tgz -C /
注意:C 后面有個空格,并且 C 是大寫的,它是英文單詞“Change”的第一個字母,
在此是改變目錄的意思。
執(zhí)行該命令,將把 arm-linux-gcc 安裝到/usr/local/arm/4.3.2 目錄
3, 把編譯器路徑加入系統(tǒng)環(huán)境變量,運行命令
# sudo gedit /root/.bashrc
編輯/root/.bashrc 文件,在最后一行加上 export PATH=$PATH:/usr/local/arm/4.3.2/bin
保存退出。如圖:
4, 重新登錄系統(tǒng),使以上設(shè)置生效,在命令行輸入 arm-linux-gcc –v,會出現(xiàn)如下信息,
這說明交叉編譯環(huán)境已經(jīng)成功安裝。
如果在這里出現(xiàn)問題,請參看 “ 交叉編譯環(huán)境的建立” 一文。
第四步:安裝zlib-1.2.3.tar.gz
可以到zlib官方網(wǎng)站:http://www.zlib.net下載 zlib-1.2.3.tar.gz ,也可以在ubuntu中
$wget http://www.zlib.net/zlib-1.2.3.tar.gz 用這種方式下載文件包
我們這里已經(jīng)下載好了文件并把zlib-1.2.3.tar.gz 文件放到了home目錄下,然后切換到相應(yīng)目錄
$ tar -xvzf zlib-1.2.3.tar.gz
$ cd zlib-1.2.3.tar.gz
$ ./configure
$ make
$ sudo make install
第五步:安裝新立德的軟件更新包
如果有的Ubuntu的版本事先安裝好了,這一步就可以跳過,不過大家最好看下,否則會在安裝qt-x11-opensource-src-4.5.0的時候出現(xiàn) /usr/bin/ld:cannot find - lXext 錯誤。
大家可以在 系統(tǒng) -- 系統(tǒng)管理 -- 新立德軟件包管理 找到新立的軟件包,然后搜索 libxext6 , libxext-dev 這個是兩個主要的。順便也可以把其他相關(guān)的包更新 如:libfreetype6-dev , libavahi-gobject-dev , libsm-dev , libxrender-dev , libfontconfig1-dev
第六步:編譯及安裝qt-x11-opensource-src-4.5.0
qt-x11版本可以產(chǎn)生Qt開發(fā)工具,如designer等等,最重要的是可以得到qvfb,嵌入式的開發(fā)有了qvfb,就可以不需要實際的開發(fā)板,也可以開發(fā)Qt應(yīng)程序。qt-embedded版本就是專門用于嵌入式方面的版本。
方法:
tar xjvf qt-x11-opensource-src-4.5.0.tar.bz2
cd qt-x11-opensource-src-4.5.0
./configure
make
sudo make install
歷經(jīng)漫長的編譯過程,我這里用了5個小時,默認(rèn)安裝在/usr/local/Trolltech/Qt-4.5.0下.這時候在/usr/local/Trolltech/Qt-4.5.0/bin這個目錄下,應(yīng)該可以找到qmake 這個文件。然后打開終端
$ cd /usr/local/Trolltech/Qt-4.5.0/bin
$ qmake
會出現(xiàn)qmake的幫助文檔:
Usage: qmake [mode] [options] [files]
QMake has two modes, one mode for generating project files based on
some heuristics, and the other for generating makefiles. Normally you
shouldn't need to specify a mode, as makefile generation is the default
mode for qmake, but you may use this to test qmake on an existing project
..........
編譯完成后源程序不要刪除,還有 用。這里一定要注意,千萬不要因為空間不夠了而刪掉編譯好的源程序,因為我們下面還要編譯qvfb,要用到這些編譯好的源代碼。
到此時 我們QT4.5已經(jīng)安裝好了。此時 諾基亞已經(jīng)推出了QT Creator,這個裝一些也是很不錯的,在軟件包管理器里面直接搜索然后標(biāo)記安裝就可以了,速度是很慢的,一定要形容的話龜速,所以大家一定要有耐心。 如果你不想裝QT Creator IDE的話,這一步可以略過。
第七步:編譯及安裝qt-embedded-linux-opensource-src-4.5.0.tar.bz2
方法:
1,在home目錄下分別解壓縮qt-embedded-linux-opensource-src-4.5.0.tar.bz2 為兩個文件夾
分別為 qt-embedded-linux-opensource-src-4.5.0-x86
qt-embedded-linux-opensource-src-4.5.0-arm
2,安裝qt-embedded-linux-opensource-src-4.5.0-x86
cd qt-embedded-linux-opensource-src-4.5.0-x86
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-x86 -embedded x86 -qvfb
//執(zhí)行configure文件
make //編譯
sudo make install //安裝
3,安裝qt-embedded-linux-opensource-src-4.5.0-arm
cd qt-embedded-linux-opensource-src-4.5.0-arm
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-arm -embedded arm
make //編譯
sudo make install //安裝
這樣就安裝完畢了,此時我們可以看到在/usr/local/Trolltech/ 目錄下多出來兩個文件夾分別是 QtEmbedded-4.5.0-arm 和 QtEmbedded-4.5.0-x86 在她們的bin目錄下都可以找到qmake 這個文件。
第八步:重新編譯qvfb
第九步:測試
cd /usr/local/Trolltech/QtEmbedded-4.5.0-x86/demos/books
qvfb -width 640 -height 480 &
./books -qws
是提示找不到gvfb的
但是系統(tǒng)卻給了提示,說可以用
sudo apt-get install qt3-dev-tools-embedded 修復(fù),
然后上面的測試就通過了
這個界面是在qvfb -width 640 -height 480 &后出現(xiàn)的,也就是我們的qvfb
然后在終端里輸入
./books -qws
后記:
在使用的時候無論 qt-x11-opensource-src-4.5.0 還是 qt-embedded-linux-opensource-src-4.5.0-x86 和
qt-embedded-linux-opensource-src-4.5.0-arm 都要修改環(huán)境變量 ,所以建立一個腳本方便以后使用。
(1)qt-x11:
建立一個文本,然后修改名字為setenv.sh,復(fù)制藍(lán)色內(nèi)容進(jìn)去
添加如下內(nèi)容:
PATH=/usr/local/Trolltech/Qt-4.5.0/bin:$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.5.0/lib:$LD_LIBRARY_PATH
保存退出.移到/usr/local/Trolltech/Qt-4.5.0中。
(2)qt-embedded-x86:
做到這一步還有qvfb沒有編譯,到qt-x11-opensource-src-4.5.0中重新編譯qvfb即可
cd qt-x11-opensource-src-4.5.0
cd /tools/qvfb
make
會在qt-x11-opensource-src-4.5.0/bin下生成qvfb這個文件,
我們將它copy至/usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin下
cp ../..bin/qvfb /usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin
其實呢,這一步是經(jīng)常有問題的,因為Ubuntu總會編譯失敗,報錯。
錯誤1 cannot find -lXtst
在上面我們安裝新立德的安裝包的時候其實已經(jīng)把這個問題解決了,如果大家出現(xiàn)這個錯誤請在檢查是不是有忘記更新的包。
建立一個文本,然后修改名字為setenv.sh,復(fù)制藍(lán)色內(nèi)容進(jìn)去
添加如下內(nèi)容:
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.0-x86
PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin:$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-x86/lib:$LD_LIBRARY_PATH
保存退出.移到/usr/local/Trolltech/QtEmbedded-4.5.0-x86中。
(3)qt-embedded-arm:
建立一個文本,然后修改名字為setenv.sh,復(fù)制藍(lán)色內(nèi)容進(jìn)去
添加如下內(nèi)容:
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.0-arm
PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-arm/bin:$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-arm/lib:$LD_LIBRARY_PATH
保存退出.移到/usr/local/Trolltech/QtEmbedded-4.5.0-arm中。
使用:
我們在運行的時候分別運行對應(yīng)的腳本即可,比如我們要用qt-x11: cd /usr/local/Trolltech/Qt-4.5.0 source setenv.sh 然后就可以用qmake designer等工具了. 結(jié)束語: 做到這一步相信大家都已經(jīng)經(jīng)歷了一到兩天甚至更多的時間,但是革命尚未成功同志仍需努力,大家接著打足精神繼續(xù)開始干吧。 同時感謝 昨夜代碼 奮斗_在路上 的幫助。