前兩天由於Ubuntu8.04頻繁死機,一激動給系統來了個大換血,裝了個Ubuntu9.04 Final版,重新編譯了一下QT4.5和Qt/Embedded 4.5。都是目前最新版本的記錄如下:
說明:
我的開發環境:
【硬件】: CPU:P4 2.8 內存:2G 硬盤:160G。
【操作系統】:Ubuntu 9.0.4。
【交叉編譯器】:armlinux-gcc-3.4.1
【用戶】:root
具體步驟與說明:
1. 下載源碼包
qt-x11-opensource-src-4.5.0.tar.bz2
qt-embedded-linux-opensource-src-4.5.0.tar.bz2
下載地址:ftp://ftp.qt.nokia.com/qt/source/
2.編譯及安裝qt-x11-opensource-src-4.5.0
qt-x11版本可以產生Qt開發工具,如designer等等,最重要的是可以得到qvfb,嵌入式的開發有了qvfb,就可以不需要實際的開發板,也可以開發Qt應程序。qt-embedded版本就是專門用於嵌入式方面的版本。
tar xjvf qt-x11-opensource-src-4.5.0.tar.bz2
cd qt-x11-opensource-src-4.5.0
./configure
make: g++:命令未找到
make: *** [outlook.o] 錯誤 127
出現錯誤是因爲沒有安裝g++編譯器,運行以下命令來安裝:
sudo apt-get install g++
應該就好了,如果還沒好,再安裝這個:
sudo apt-get install pentium-builder
直 接運行 sudo apt-get install libx11-dev libfreetype6-dev libavahi-gobject-dev libSM-dev libXrender-dev libfontconfig-dev libXext-dev 就可以了
make
sudo make install
歷經漫長的編譯過程,約一個半小時,默認安裝在/usr/local/Trolltech/Qt-4.5.0下.編譯完成後源程序不要刪除,還有用。
3.編譯及安裝qt-embedded-linux-opensource-src-4.5.0
在用戶目錄下建立一個src目錄,用於存放編譯源文件qt-embedded-linux-opensource-src- 4.5.0.tar.bz2。將其解壓得到qt-embedded-linux-opensource-src-4.5.0,重命名爲qt- embedded-linux-opensource-src-4.5.0-x86. 再次解壓qt-embedded-linux-opensource-src-4.5.0.tar.bz2,並重命令爲qt-embedded- linux-opensource-src-4.5.0-arm.爲什麼有兩個複製呢?我們可以從他們的名字上就不難看出前者是適合x架構的,後者適合 arm架構的,如果有開發板的話,可以只編譯qt-embedded版本成arm架構的就可以了,但是很多時候用qvfb的話,開發會方便很多,所以多編譯一個x86架構的也不錯。
mkdir ~/src
mv qt-embedded-linux-opensource-src-4.5.0.tar.bz2 ~/src
tar xjvf qt-embedded-linux-opensource-src-4.5.0.tar.bz2
mv qt-embedded-linux-opensource-src-4.5.0 qt-embedded-linux-opensource-src-4.5.0-x86
tar xjvf qt-embedded-linux-opensource-src-4.5.0.tar.bz2
mv qt-embedded-linux-opensource-src-4.5.0 qt-embedded-linux-opensource-src-4.5.0-arm
cd qt-embedded-linux-opensource-src-4.5.0-x86
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-x86 -embedded x86 -qvfb
make
make install
-------OK!qt-embedded-x86被安裝在/usr/local/Trolltech/QtEmbedded-4.5.0-x86下.
cd qt-embedded-linux-opensource-src-4.5.0-arm
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-arm -embedded arm
在這裏編譯器報錯:
The
target system byte order could not be detected!Turn on verbose
messaging (-v) to see the final report.You can use the -little-endian
or -big-endian switch to
./configure to continue.
這時我選擇了小端編譯的方式。 -little-endian編譯通過。
#./configure -little-endian
make
make install
-------OK!qt-embedded-arm被安裝在/usr/local/Trolltech/QtEmbedded-4.5.0-arm下.
4.至此我們已經安裝好了qt-x11版,即在PC機上運行的QT,qt-embedded-x86版(x86體系的嵌入式板子上運行的QT)和qt-embedded-arm(arm板子上運行的QT).下一步:設置環境變量
(1)qt-x11:
vi setenv.sh
添加如下內容:
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:
vi setenv.sh
添加如下內容:
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:
vi setenv.sh
添加如下內容:
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中。
我們在運行的時候分別運行對應的腳本即可,比如我們要用qt-x11:
cd /usr/local/Trolltech/Qt-4.5.0
source setenv.sh
然後就可以用qmake designer等工具了.
5.做到這一步還有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
6.做一個測試
cd /usr/local/Trolltech/QtEmbedded-4.5.0-x86
source setenv.sh
cd /usr/local/Trolltech/QtEmbedded-4.5.0-x86/demos/books
qvfb -width 640 -height 480 &
./books -qws
效果截圖: