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