網址:qt-everywhere-opensource-src-5.5.1.tar.gzlinux
解壓源碼包,在源碼包路徑下生成配置 MakeFile :web
./configure -prefix /home/qt-5.5.1 -release -opensource -confirm-license -static \ -platform linux-g++ -xplatform linux-himix200-linux-g++ \ -qt-zlib -qt-libpng -qt-libjpeg -qt-freetype -no-pch -no-avx -no-openssl \ -no-cups -no-dbus -no-opengl -no-glib -skip qtwebchannel -skip qtcanvas3d -skip qtwebkit \ -mtdev -evdev -nomake examples -nomake tests
/home/qt-5.5.1
;生成 MakeFile 文件以後,依次進行:canvas
make make install
make編譯完後, 會生成若干Qt的.a文件,這裏說下qt的核心庫會被編譯在qt-everywhere-opensource-src-5.5.1/qtbase/lib
目錄下,而fb以及圖像支持的庫入libjpeg和libgif等庫都是以插件的形式存在的,放在qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins
目錄下。後端
arm上使用的繪圖後端通常都是linuxfb這個插件,在海思上使用fb以前須要先作一些初始化的工做,須要先初始化MPP系統以及VO,否則直接打開fb會報權限不容許的錯誤。 在此咱們能夠經過修改qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/linuxfb
,添加MPP,VO初始化的工做。以後再執行:工具
make make install
這時linuxfb插件就能夠適配海思平臺,此部分的修改參考文末的下載程序。測試
點擊qtCeator菜單欄的Tools->option->Build&Run,配置交叉編譯環境:ui
arm-himix200-linux-g++
的路徑,,個人路徑是arm-himix200-linux/bin
/下。qt-5.5.1/bin/qmake
, 該qmake是使用arm-himix200-linux-g++編譯後生成的工具類,專門使用在3519平臺上,用於生成相應的Makefile。建立一個簡單的qt程序,在.pro
中添加海思相關的庫和頭文件,並使用qmake手動生成makefile:this
qt-5.5.1/bin/qmake *.pro -o Makefile
接着make
並生成可執行文件,將文件拷貝到nfs系統的/home
目錄下,工程能夠參考文末的下載程序,接着就能夠執行程序。spa
目的是將qt的GUI與海思的MPI分離,在視頻層上疊加上圖形層。 此部分的工做,須要在linuxfb
上啓用hifb
。 另外,設置QT界面透明顯示 (1) 修改qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp
:.net
for (int i = 0; i < rects.size(); i++) { // - //mBlitter->drawImage(rects[i], *mScreenImage, rects[i]); // + mBlitter->setCompositionMode(QPainter::CompositionMode_Source); mBlitter->drawImage(rects[i], *mScreenImage, rects[i]); mBlitter->setCompositionMode(QPainter::CompositionMode_SourceOver); }
(2) 修改qtbase\src\platformsupport\fbconvenience\qfbscreen.cpp
:
// - //mCompositePainter->fillRect(rect, Qt::black); //+ mCompositePainter->setCompositionMode(QPainter::CompositionMode_Source); mCompositePainter->fillRect(rect, Qt::transparent); mCompositePainter->setCompositionMode(QPainter::CompositionMode_SourceOver);
(3) 修改qt程序
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); setWindowFlags(Qt::CustomizeWindowHint); }