天天看點

qt4.5.3移植全過程

qt4.5.3移植全過程 1.安裝交叉編譯環境

a..下載下傳arm-linux-gcc-3.4.1.tar.bz2( 建議用的這個版本的,有些低版本的交叉編譯工具在編譯時會出錯)

arm-linux-gcc-3.4.1.tar.bz2 的下載下傳位址如下:

http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2

b.解壓 arm-linux-gcc-3.4.1.tar.bz2

  #tar -jxvf arm-linux-gcc-3.4.1.tar.bz2

  解壓過程需要一段時間,解壓後的檔案形成了 usr/local/ 檔案夾,進入該檔案夾,将arm檔案夾拷貝到/usr/local/下

  # cd usr/local/

  #cp -rv arm /usr/local/

  現在交叉編譯程式集都在/usr/local/arm/3.4.1/bin下面了

c. 修改環境變量,把交叉編譯器的路徑加入到PATH。(有三種方法,這裡隻寫一種)

# vi ~/.bashrc

在最後加上:

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

d. 立即使新的環境變量生效,不用重新開機電腦

#source ~/.bashrc

e.檢查是否将路徑加入到PATH:

   # echo $PATH

  顯示的内容中有/usr/local/arm/bin,說明已經将交叉編譯器的路徑加入PATH。至此,交叉編譯環境安裝完成。

f.測試是否安裝成功

# arm-linux-gcc -v

上面的指令會顯示arm-linux-gcc資訊和版本,這是我顯示的資訊:

 Reading specs from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs

 Configured with: /work/crosstool-0.27/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc- 3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu

 --prefix=/usr/local/arm/3.4.1 --with-headers=/usr/local/arm/3.4.1/arm

 -linux/include --with-local-prefix=/usr/local/arm/3.4.1/arm-linux --disable

 -nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable- languages=c,c++ --enable-shared --enable-c99 --enable-long-long

 Thread model: posix

 gcc version 3.4.1

到這裡就成功安裝好了交叉編譯環境

2.安裝qt-x11

進入下載下傳頁面:選擇Download Qt libraries 4.5 for Linux/X11(120 Mb)

# aptitude install libxtst-dev

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

# cd qt-x11-opensource-src-4.5.3

# ./configure

# make

# make install

qt-x11 被安裝到此目錄下/usr/local/Trolltech/Qt-4.5.3

編譯qvfb:

# cd qt-x11-opensource-src-4.5.3/tools/qvfb

# make

至此,qt-x11安裝完畢完畢

3.安裝qt-embedded

選擇支援arm的體系結構

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

# cd qt-embedded-linux-opensource-src-4.5.3

#./configure -embedded arm -xplatform qws/linux-arm-g++ -no-qt3support -qt-mouse-linuxtp(我自己的設定,你可以通過檢視./configure -help來設定)

#make

#make install

qt-embeded 被安裝在這個目錄下/usr/local/Trolltech/QtEmbedded-4.5.3-arm 或者是/usr/local/Trolltech/QtEmbedded-4.5.3-generic

一般在/usr/local/Trolltech/QtEmbedded-4.5.3-arm

這裡你可以建立一個set-env.sh檔案

把下面複制到檔案中

export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.3-arm

export PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/bin:$PATH

exportLD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib:$LD_LIBRARY_PATH

每次用的時候進行設定

#. set-env.sh 或者是 source set-env.sh

安裝qt-embed請參考我的這個文章: http://www.qtcn.org/bbs/read.php?tid=22600

4.移植到開發闆

下面通過NFS方式來測試是否成功(你必須提前配置好nfs)

先準備好2個nfs目錄,取名為nftsroot

一個是用來備用的,取名為fonts

a.準備庫和字型

#cp -a /usr/local/Trolltect/QtopiaCore-4.3.0-arm/lib /nfsroot

然後在usr/local/Trolltect/QtopiaCore-4.3.0-arm裡面收索到這些庫

librt.so,librt.so.1,libstdc++.so,libstdc++.so.6,libstdc++.so.6.0.1

筆者就是在運作時就提示要這些庫,所有大家還是先準備好來,然後複制到/nfsroot/lib裡

#ls /nfsroot/lib

fonts libQtScript.prl libQtSvg.so.4.5.3

libgcc_s.so libQtScript.so libQtTest.la

libgcc_s.so.1 libQtScript.so.4 libQtTest.prl

libQtCore.la libQtScript.so.4.5 libQtTest.so

libQtCore.prl libQtScript.so.4.5.3 libQtTest.so.4

libQtCore.so libQtScriptTools.la libQtTest.so.4.5

libQtCore.so.4 libQtScriptTools.prl libQtTest.so.4.5.3

libQtCore.so.4.5 libQtScriptTools.so libQtXml.la

libQtCore.so.4.5.3 libQtScriptTools.so.4 libQtXml.prl

libQtGui.la libQtScriptTools.so.4.5 libQtXml.so

libQtGui.prl libQtScriptTools.so.4.5.3 libQtXml.so.4

libQtGui.so libQtSql.la libQtXml.so.4.5

libQtGui.so.4 libQtSql.prl libQtXml.so.4.5.3

libQtGui.so.4.5 libQtSql.so librt-2.3.2.so

libQtGui.so.4.5.3 libQtSql.so.4 librt.so

libQtNetwork.la libQtSql.so.4.5 librt.so.1

libQtNetwork.prl libQtSql.so.4.5.3 libstdc++.so

libQtNetwork.so libQtSvg.la libstdc++.so.6

libQtNetwork.so.4 libQtSvg.prl libstdc++.so.6.0.1

libQtNetwork.so.4.5 libQtSvg.so pkgconfig

libQtNetwork.so.4.5.3 libQtSvg.so.4

libQtScript.la libQtSvg.so.4.5

當然這些庫檔案不是每個都需要,使用者可以根據自己的應用來選擇

接下來将開發闆和主機通過網線連接配接起來,并在開發闆裡進行mount

#mount -t nfs 192.168.0.10:/nfsroot /mnt -o nolock

#ls /mnt

lib

接下來事字型(在lib目錄的fonts),字型比較麻煩,

根據文檔說明,Qtopia預設查找字型的目錄是/usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts

我們有兩種方式來挂載字型庫。

第一種:

#mount -t ramfs ramfs /usr

#cd /usr

#mkdir local && mkdir local/Trolltech

#ln -s /mnt local/Trolltech/QtEmbedded-4.5.3-arm

#ls /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/fonts

這樣我們就配置好了。

如果上一種方法不行,看下面這種,一定可以!

第二種:

首先用到剛才的備用的nfs目錄 fonts(看名字就曉得用來挂載字型庫的)

#cp -arf /usr/local/Trolltect/QtopiaCore-4.3.0-arm/lib/fonts /fonts

在開發闆裡

#mount -t nfs 192.168.0.10:/fonts /usr/local/Trolltech/QtEmbedded-4.5.3-arm -o nolock

這樣就把字型庫連結到 /usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts目錄來了

第二種方法是我同學想出來的,很不錯吧,

他的部落格是: http://hi.baidu.com/armlinuxhouse/blog/item/c2fb91ca42b0811d7f3e6f10.html

裡面有很多好的文章!

4.交叉編譯Hello World 程式

首先寫一個hello.cpp的程式

#qmake -project

#qmake

得到一個hello的arm可執行程式(通過file指令來檢視它所屬的cpu)

并将該

#cp hello /nfsroot

然後在超級終端裡運作

#export LD_LIBRARY_PATH=/mnt/lib:$LD_LIBRARY_PATH

#cd /mnt

#./hello -qws

這樣就能看到你的運作程式了!

enjoy!

<基于 www.hacktao.com上的作品創作,轉載請注明!>

繼續閱讀