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