之前做過關于QT的移植和相關的編程工作,,簡單的介紹一下,方便以后在開發(fā)板上的應用程序的開發(fā),。由于移植的QT版本比較高,,所以工作相當?shù)姆爆崱?br> Qt的編譯過程: (1) 下載安裝文件 登錄Qt官方網(wǎng)站,,在下載專區(qū)里,,下載qt-embedded-linux-opensource-src-4.5.2.tar.bz2文件,,放在指定的目錄下。 獲取交叉編譯器的安裝文件:4.3.1-eabi-armv6-mv20081010.tar.gz,。 (2) 安裝交叉編譯器 首先,,找到相應的安裝文件包,,解壓該文件: #tar xvf 4.3.1-eabi-armv6-mv20081010.tar.gz 然后,,創(chuàng)建如下目錄: #mkdir -p /usr/local/arm #mv 4.3.1-eabi-armv6-mv20081010 /usr/local/arm/ 再修改環(huán)境變量: #export PATH=$PATH:/usr/local/arm/4.3.1-eabi-armv6/usr/bin/arm-linux- 接著,手動修改添加執(zhí)行文件: vi ~/.bash_profile 我的Linux 系統(tǒng)環(huán)境如下: PATH=$PATH:$HOME/bin:/usr/local/arm/4.3.1-eabi-armv6/usr/bin LD_LIBRARY_PATH=/usr/local/arm/4.3.1-eabi-armv6/gmp/lib:/usr/local/arm/ 4.3.1-eabi-armv6/mpfr/lib export PATH LD_LIBRARY_PATH unset USERNAME LANG=en 最后,,執(zhí)行source命令式設置生效: #source ~/.bash_profile (3) 編譯安裝tslib1.4 ① 安裝編譯過程需用到的程序 # apt-get install autoconf # apt-get install automake # apt-get install libtool ② 配置編譯 # tar xzvf tslib-1.4.tar.gz # cd tslib 生成./configure # source autogen.sh #./configure–prefix=/usr/local/tslib/–host=arm-linuxac_cv_func_malloc_0_nonnull=yes # make ③ 安裝 # make install-strip //生成瘦身應用程序和庫 打包: # tar czvf tslib.tar.gz tslib ④ 復制到NFS文件系統(tǒng)/usr/local目錄下解壓 # tar xzvf tslib.tar.gz ⑤ 設置環(huán)境變量,,校準觸摸屏,。 在天開板終端建立腳本文件,并執(zhí)行: export TSLIB_ROOT=/usr/local/tslib export TSLIB_TSDEVICE=/dev/input/event0 export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts export TSLIB_CALIBFILE=/etc/pointercal export TSLIB_FBDEVICE=/dev/fb0 export QWS_MOUSE_PROTO=Tslib:/dev/input/event0 注意:觸摸屏的前提是你的觸摸屏驅(qū)動加載進了內(nèi)核. 可以測試有沒有加載觸摸屏驅(qū)動,,cat /dev/input/event0,。點擊觸摸屏,看終端有無顯示,,若有則表明正確,。 在開發(fā)板/usr/local/tslib/bin目錄下執(zhí)行校準觸摸屏程序: # ./ts_calibrate 當然,,也可以運行此目錄下的其他程序進行測試。 (4) 移植流程 通過瀏覽README文件,,可以了解到Qt編譯的整個過程,。首先是要按自己的實際需求配置Qt源文件,然后指定特定的交叉編譯器對Qt源文件進行交叉編譯,,接著在安裝到指定的路徑下,,最后把生成的,,編譯通過的Qt文件系統(tǒng)拷貝到相應的目標平臺上,,并且配置相應的環(huán)境變量,,使得Qt文件系統(tǒng)移植成功。 (5) 詳細了解配置參數(shù) 經(jīng)過上述分析,,根據(jù)自己定制的要移植的Qt文件系統(tǒng)的配置,。我使用的實際配置命令如下: ./configure -release -shared -fast -qt-sql-mysql -plugin-sql-mysql -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-svg -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -make tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype depths16,18 –qt-mouse-tslib –L/usr/local/tslib/lib –I/usr/local/tslib/include 在配置過程中,,需要選擇開源模式,并且同意相應的選項提示,,才能順利通過Qt文件系統(tǒng)的配置操作。 在Qt文件系統(tǒng)編譯的配置過程,,是最耗費時間和精力的工作了。我在實際的編譯過程中,,就是因為編譯之前的配置不夠合理,出現(xiàn)了很多的問題,。配置參數(shù)不合理,,不能達到最后移植的要求,導致我編譯Qt文件系統(tǒng)多次,。所以,,在Qt編譯配置時候,一定要認真分析每個參數(shù)的作用,,還要細心發(fā)現(xiàn)編譯過程中的錯誤,,善于修改一些相關文件的不合理內(nèi)容。只有這樣,,才能夠成功的編譯Qt文件系統(tǒng),,為下一步的移植工作做好準備,。 (6) 編譯與移植 在配置Qt文件的編譯參數(shù)后,,在Qt文件系統(tǒng)的主目錄下,,運行make命令即可啟動Qt源碼的編譯。這個編譯過程是十分漫長的,。在編譯的過程中,,起初是有PC機上的gcc編譯器編譯相應的文件的,過后系統(tǒng)會自動使用相應的交叉編譯器來編譯后面的部分,,并且生成可移植的目標Qt文件系統(tǒng)了,。 在編譯的過程中,可能會出現(xiàn)一些錯誤,,并且錯誤的形式還是不盡相同的。這就要求我們根據(jù)出現(xiàn)的錯誤一個一個解決才行。最常用的解決方法,,就是刪除原有的安裝文件,,因為往往執(zhí)行重新配置命令后,,依然不能徹底的解決問題。再重新解壓安裝文件,,進行再配置,。常見的問題有configure配置時候出現(xiàn):SQL enable supported in test files……的問題。我們可以首先進入config.test文件夾中,,修改complie.test文件中的內(nèi)容,,在最后幾行上,注釋掉make disclean相關的內(nèi)容,。然后,,到MySQL源文件中先進行交叉編譯,,生成目標文件,這樣就可以避免重復被編譯了,。所以,問題就會被解決了,。當然,,在編譯的過程中,也會遇到其他種類的問題的,,針對不同的問題使用不同的解決方法,,正常的情況下,都會順利通過編譯的,。 移植的過程相對來說是比較簡單的,。把Qt交叉編譯好的文件,掛載到ARM開發(fā)板的相應路徑下,,配置QT相關的環(huán)境變量就可以了,。
結(jié)果檢測在Qt文件系統(tǒng)交叉編譯之后,必須通過把其移植到ARM開發(fā)板上,,才能檢測其是否編譯成功了,,這也是必須做的一步。 (1) minicom配置 在終端中,直接配置minicom,。 ① 在root用戶下,,執(zhí)行minicom –s 命令,進入minicom配置界面,; ② 進入配置界面后,,ctrl+A~Z是選擇配置的各個功能欄; ③ 由于我使用的是筆記連接ARM開發(fā)板,,所以要用到的是U口轉(zhuǎn)串口的連接線,,也就是我要配置的端口不是通常情況下的串口,而是USB口,。所以,,串口號選擇為:/dev/ttyUSB0即可,。 ④ 其他項的配置:波特率為115200 8N1,Hardware Flow Control設為NO 等,。 ⑤ 配置完成后,,重新啟動minicom就可以連接到ARM開發(fā)板上了。 (2) nfs-server安裝與配置 ① 安裝 在終端中,,執(zhí)行如下命令: $sudo apt-get install nfs-kernel-server,; 輸入密碼即可,。 ② 配置 配置nfs服務很簡單,主要修改相應的配置文件,,再重新啟動nfs服務就可以了,。利用vi編輯器修改配置文件,即/etc/exports文件,。在文件中,,加入PC機上要掛載到開發(fā)板的文件目錄,并制定授權(quán)的ip地址和操作權(quán)限,。配置好之后,,重新啟動nfs服務既可以生效了。啟動命令是:/etc/init.d/nfs-kernel-server restart ,。這樣操作之后,,就可以把相應的文件掛載到開發(fā)板上了。注意,,掛載之前,,應該通過minicom把開發(fā)板的ip地址改為和PC機的ip地址處在同一網(wǎng)段上才可以,。 (3) ARM開發(fā)板上的環(huán)境變量配置 ARM開發(fā)板上Qt文件系統(tǒng)的相關環(huán)境變量設置如下: QTDIR 為Qt根文件目錄; LD_LIBRARY_PATH 為QTDIR/lib,; QT_QWS_FONTDIR 為 QTDIR/lib/fonts,。 … … (4) 程序測試 在PC機上,利用Qt-Creater編寫一個簡單的Qt圖形界面的應用程序,,以備測試使用,。開啟終端,進入此應用程序的路徑下,,執(zhí)行make clean命令,在刪除可執(zhí)行文件和相應的Makefile文件,。在使用上述交叉編譯生成的可移植的Qt文件系統(tǒng)中的/bin/qmake命令,,重新編譯此應用程序。 具體的操作步驟如下: $/usr/local/Trolltech/QrEmbedded4.5.2/bin/qmake –project $/usr/local/Trolltech/QrEmbedded4.5.2/bin/qmake $make 這樣,,將此可執(zhí)行文件掛載到開發(fā)板上,,關閉開發(fā)板自帶的Qt進程(使用kill命令),設置好開發(fā)板的環(huán)境變量后,,即可運行此程序了,。 利用minicom輸入運行應用程序的命令,例如:./xxxx –qws ,。 如果,,在開發(fā)板的屏幕上顯示該應用程序產(chǎn)生的圖形界面,就證明Qt文件系統(tǒng)編譯與移植都成功了,;否則,,就是編譯或者移植的過程中存在問題,還需要從開始編譯Qt的地方找問題的出處,,進行重新編譯和移植工作,。移植Qt文件系統(tǒng),是一個相當麻煩而且消耗時間的工作,,必須不厭其煩的進行調(diào)試和重新編譯的,。也只有這樣,才會最終實現(xiàn)Qt的成功移植,。 |
|