解析Qt 4.3.5 X11 交叉編譯平臺(tái)的搭建、移植
首先我們要知道的是Qt平臺(tái)有Pc開(kāi)發(fā)平臺(tái),(以本人所裝的Redhat9linux/Qt4.3.5/arm-3.4.1版本為例)首先我們要知道的是Qt平臺(tái)有Pc開(kāi)發(fā)平臺(tái),(以本人所裝的Redhat9linux/Qt4.3.5/arm-3.4.1版本為例)
一、Qt 嵌入式開(kāi)發(fā)平臺(tái)的建立
概述:Qt 嵌入式開(kāi)發(fā)平臺(tái)包括:
1、Qt-X11開(kāi)發(fā)平臺(tái):(即為我們平時(shí)開(kāi)發(fā)Qt應(yīng)用程序時(shí)使用的系統(tǒng)平臺(tái))。
2、Qt opiaCore-4.3.5開(kāi)發(fā)平臺(tái)(即framebuffer):該平臺(tái)可以讓Qt程序在pc機(jī)上模擬在嵌入式平臺(tái)的運(yùn)行情況,一般在Qt opiaCore上模擬運(yùn)行成功后才,進(jìn)行交叉編譯。
3、Qt opiaCore-4.3.5-arm交叉編譯平臺(tái):在此平臺(tái)下編譯通過(guò)的Qt程序就可以移植到arm板上運(yùn)行了。
step1:
建立Pc開(kāi)發(fā)平臺(tái)(x11、redhat9的桌面就屬于X11):
下載Qt4.3.5pc開(kāi)發(fā)包qt-x11-opensource-src-4.3.5.tar.gz
- #tar xzvf qt-x11-opensource-src-4.3.5.tar.gz
- #cd Qt-4.3.5
- #./configure //
- #make install //此過(guò)程需要3-8小時(shí)
安裝好后,系統(tǒng)默認(rèn)安裝在/usr/local/Trolltech/Qt-4.3.5目錄下
檢查環(huán)境變量:
- #which qmake
step2:
建立Qt opiaCore-4.3.5編譯平臺(tái)(此時(shí)編譯器仍然用的是默認(rèn)的gcc)
此平臺(tái)下的安裝包原碼包和X11平臺(tái)是一樣的,只是configure時(shí)配置不同
- #tar xzvf qt-x11-opensource-src-4.3.5.tar.gz
- #cd Qt-4.3.5
- #./configure -embedded x86 -qvbf -no-openssl
- //注意幾個(gè)選項(xiàng)表示,以qvfb表示 -no-openssl表示不需要認(rèn)證,否則會(huì)安裝過(guò)程中一直叫你輸入yes確認(rèn)
- #make install //此過(guò)程需要3-8個(gè)小時(shí)
安裝完成后usr目錄多了一個(gè)文件夾/usr/local/Trolltech/QtopiaCore-4.3.5就表示安裝成功了
step3:
Qt optiaCore-4.3.5-arm交叉編譯平臺(tái)的建立(此時(shí)不是用系統(tǒng)默認(rèn)的gcc來(lái)編譯了),此平臺(tái)下的安裝源碼包X11平臺(tái)是一樣的,只是configure時(shí)配置不同
- #tar xzvf qt-x11-opensource-src-4.3.5.tar.gz
- #cd Qt-4.3.5
- #./configure -embedded arm //注意幾個(gè)選項(xiàng),必須加上 -embedded arm選項(xiàng)
- #make install //此過(guò)程需要3-8個(gè)小時(shí)
安裝完成后usr目錄多了一個(gè)文件夾/usr/local/Trolltech/QtopiaCore-4.3.5-arm就表示安裝成功了
step4:
設(shè)置環(huán)境變量:環(huán)境變量的設(shè)法總的說(shuō)來(lái)有4種(export、profile、.bashrc、.bashrc_profile)具體看自己情況來(lái)定
- #vi /root/.bash_profile //在環(huán)境變量的最前面加上一句:PATH=/usr/local/Trolltech/QtopiaCore-4.3.5-arm/bin:$PATH
- #source /root/.bash-Profile //使環(huán)境變量生效
好了平臺(tái)已經(jīng)搭建好了,可以用他來(lái)編譯Qt程序了
step5:
用QtopiaCore-4.3.5-arm來(lái)進(jìn)行交叉編譯
- #qmake -v //檢查自己的qt環(huán)境變量是否正確,如果不正確的話,就返回第4步
- #cd myqtprogram //進(jìn)入自己寫(xiě)的qt程序
- #qmake -project //根QtX11環(huán)境一樣編譯
- #qmake
- #./myqtprogram //運(yùn)行程序
step6:
察看自己寫(xiě)的Qt程序需要用到哪些庫(kù)文件資源。
- #arm-linux-readelf -a -myqtprogram | grep Shared //Shared首字母大寫(xiě);
step7:
拷貝庫(kù)文件:
根據(jù)上一步提示把Qt程序要用到的資源文件拷到自己制作的根文件系統(tǒng)中,以下是按本人寫(xiě)的Qt程序所需要的庫(kù)寫(xiě)的
將程序移植到arm板運(yùn)行,根文件系統(tǒng)root.cramfs和kernel的制作在這里就不細(xì)說(shuō)了,本人用的是自己早做好的qt-root文件系統(tǒng)。
拷貝庫(kù)文件到自己制作的root系統(tǒng)中(注意:拷貝時(shí)一定要看看大小,千萬(wàn)不要拷到連接文件(相當(dāng)于快捷方式)了)
- #cd qt-root
- #cd usr/lib //注意這里不要進(jìn)到pc機(jī)linux的usr目錄下去了
- #cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libpng* ./
- //把圖形庫(kù)考過(guò)去,否則圖片顯示不了,強(qiáng)烈建議用png、bmp格式的圖片,用其他格式的圖片的話,否則你還要自己做連接庫(kù)
- #cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libQtCore.so libQtGui.so ./ //這2個(gè)庫(kù)不用說(shuō)一定要考的
- #cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libQtNetwork.so ./ //和網(wǎng)絡(luò)相關(guān)的庫(kù)
- #cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libstdc++.so ./
- #cd ../
- //以下是在根文件系統(tǒng)qt-root/usr/local/下制增加一個(gè)Trolltech/QtopiaCore-4.3.5-arm/lib/fonts路徑目錄并添加相應(yīng)的字體文件,否則在arm板上會(huì)出錯(cuò)顯示不了字
- #mkdir local/Trolletch
- #mkdir local/Trolletch/Qtopia-4.3.5-arm
- #mkdir local/Trolletch/Qtopia-4.3.5-arm/lib
- #cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/fonts local/Trolletch/Qtopia-4.3.5-arm/lib //注意不要拷錯(cuò)路徑了
step8:
把程序下載到arm板運(yùn)行(注意:本人是用的microsoft的附件/通訊工具/超級(jí)終端連接到板子上,以下的操作對(duì)象都是在板子上了)
- #./ln -s /dev/fb/0 /dev/fb0 //由于本人的板子上燒的root文件系統(tǒng)顯示設(shè)備名稱和路徑都不匹配,所以只有給他做個(gè)連接了,否則運(yùn)行時(shí)會(huì)提示找不到fd0
- #./myqtprogram -qws //-qws表示以服務(wù)器模式運(yùn)行
現(xiàn)在可以了,能在本子上跑起來(lái)了。
【編輯推薦】
深度解析嵌入式QT開(kāi)發(fā)環(huán)境搭建