海思 3520D 移植Qt4.5.3 一
來源:互聯網
上載者:User
一、移植Qt4.5.3
1、獲得 Qt4.5.3 的原始碼Qt4.5.3原始碼的原始包 qt-embedded-opensource-src-4.5.3.tar.gz 將其拷貝到 /opt 下,
然後在linux終端上輸入如下命令(不用鍵入#),在/opt/下解壓Qt4.5.3的源碼包
# cd /opt/
# tar xvzf /opt/qt-embedded-opensource-src-4.5.3.tar.gz
2、交叉編譯Qt4.5.3
2.1、#vim mkspecs/qws/linux-arm-g++/qmake.conf,把所有的arm-linux-**改為arm-hisiv100nptl-linux-**
2.2、#vim examples/examples.pro,
刪除行
contains(QT_CONFIG, webkit): SUBDIRS += webkit
否則編譯example webkit時會報錯
2.3、#vim demos/demos.pro,
刪除兩行
contains(QT_CONFIG, webkit):contains(QT_CONFIG, svg):SUBDIRS += demos_browser
demos_browser.subdir = browser
否則編譯demo browser會出錯
問題:
The tslib functionality test failed!You might need to modify the include and library search paths by editing QMAKE_INCDIR and QMAKE_LIBDIR in...
2.4、tslib安裝路徑,注意tslib需交叉編譯成功
在../qt-embedded-linux-opensource-src-4.5.3/mkspecs/qws/linux-arm-g++/qmake.conf檔案中加入tslib的安裝路徑
QMAKE_INCDIR =/home/littlecc/qt/tslib/tmp/include //這是我tslib安裝路徑
QMAKE_LIBDIR =/home/littlecc/qt/tslib/tmp/lib
當然也可在./configure裡加入-I/=/usr/local/tslib/include -L=/usr/local/tslib/lib來解決問題,
在./configure選項裡加入-verbose,這樣可以比較詳細地告訴你錯誤的原因
注意:後面設定環境變數時會用到這個路徑 /opt/Qt4.5.3
2.5、執行configure進行配置
./configure --prefix=/opt/Qt4.5.3 -no-pch -xplatform qws/linux-arm-g++ -arch arm -embedded arm -no-freetype -qt-mouse-pc -no-webkit -no-largefile -fast -release -no-qt3support -no-cups -no-opengl -no-phonon -phonon-backend -no-scripttools -no-libtiff -no-gif -no-libmng -no-nis -no-cups -no-svg
選擇:
o
yes
上面的主要參數含義說明如下:
-prefix /opt/Qt4.5.3: 表示Qt4.5.3最終的安裝路徑是 /opt/Qt4.5.3 ,注意,部置到開
發板時,也需要把Qt4.5.3放在這個路徑上;
-no-pch
-xplatform qws/linux-arm-g++: 表示使用arm-linux交叉編譯器進行編譯;
-arch arm
-embedded arm: 表示將編譯針對arm平台的embedded版本;
-no-freetype
-qt-mouse-pc
-no-webkit
-qt-mouse-tslib: 表示將使用tslib來驅動觸控螢幕;
-opensource
-qt-libtiff
-qt-libmng
-qt-mouse-tslib
-no-mouse-linuxtp
-no-neon
執行以下命令進行編譯並安裝Qt4.5.3:
# make && make install
上面命令中出現的&&符號表示只有左邊的make 命令執行成功時(返回0),才會執行右邊的make
install命令。
編譯完成後,Qt4.5.3被安裝在 /opt/Qt4.5.3 目錄下
提高編譯速度:
使用選項-nomake examples –nomake demos –nomaketools過濾掉例子、示範和工具目錄,他們不進行編譯。
3、環境搭建
3.1、
libstdc++.so.6 libstdc++.so.6.0.3並複製到海思開發板檔案系統/lib下;
交叉工具鏈的安裝目錄搜尋libgcc_s.so libgcc_s.so.1並複製到海思開發板檔案系統/lib下;(測試中只用到了libstdc++.so.6庫)
3.2、掛載調試
將編譯出來的qt庫複製到我的掛載目錄下
cp /opt/Qt4.5.3 /home/littlecc/
做一下軟串連,將庫串連到海思開發板檔案系統/opt目錄下,為什麼呢因為我們配置的時候 -prefix /opt/Qt4.5.3就是這個目錄,不然會出錯
ln -s /mnt/Qt4.5.3 /opt/Qt4.5.3
3.3
設定環境變數 直接修改海思開發板/etc/profile檔案
vi /etc/profile
添加如下:
QTDIR=/opt/Qt4.5.3 //路徑一定要設定對不然程式運行不了
PATH=$QTDIR/bin:$PATH
TSLIB_CONSOLEDEVICE=none
LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib
以上四句為環境變數聲明,網上很多文章中都還有聲明QWS_MOUSE_PROTO、TSLIB_FBDEVICE等,建議不要聲明這些變數,
因為qt會自動匹配相關的滑鼠裝置和framebuffer裝置,有時候聲明了反而會影響滑鼠的正常工作,我的framebuffer和滑鼠裝置符分別為/dev/fb0和/dev/mice,
QT可以自動識別,確保起見,不是這兩個名稱的寧可用ln -s做一下軟連結,也不要隨便去設定環境變數
此時,就可以測試回合一下了,首先運行一下海思SDK中mpp/sample下的hifb測試程式,把framebuffer 0開啟,再運行qt的各個example和demo
./api_sample_hifb &
保證此時可以在顯示器上看到測試畫面,保證VGA晶片驅動及framebuffer驅動載入運行正確,然後,
cd /opt/Qt4.5.3/demos/chip/
./chip -qws
即可在顯示器上看到QT的測試畫面效果;
如果運行過程中提示“QFontEngineQPF failed”字樣,把src/gui/text/qfontdatabase_qws.cpp開啟做一下空寫操作,然後重新上面所有步驟再編譯一遍即可,原因未明。
注意:
問題一:/dev/fb0 開啟失敗問題
由于海思在操作Framebuffer需要進行相應的配置,如果沒有進行相應的配置,那麼去開啟/dev/fb0是會報錯的。
具體進行了如下兩個操作步驟:
(1)、初始化MPP
(2)、使能輸出裝置VO
經過了以上兩個步驟以後,開啟/dev/fb0才不會出錯
3.4、寫一個demo測試一下
#include<QApplication>
#include<QPushButton>
#include <stdio.h>
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
qDebug() << "hello 3520 I am qt\n";
return app.exec();
}
如果等列印出來,說明你移植成功了,接下來驗證gui介面能不能顯示出來
GOOD LUCK!!