网址: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); }