源码下载

网址:qt-everywhere-opensource-src-5.5.1.tar.gz

配置生成MakeFile 文件

解压源码包,在源码包路径下生成配置 MakeFile :

./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
  • -prefix /home/qt-5.5.1 指定最终的安装路径为/home/qt-5.5.1
  • -static 来生成静态库是为了方便程序在板端运行,减少对库加载路径的配置以及文件目录的挂载。执行程序时不需要再设置一堆的环境变量以及挂载库的路径;
  • -qt-zlib -qt-libpng -qt-libjpeg -qt-freetype 这几个选项最好使用qt库自带的源码,不然如果系统上没有这个库或者找不到,自行编译这些库后再加入到相关路径上还需要为这些库写依赖文件才能使用,没有依赖文件,链接程序时会报一些插件找不到的错误;
  • -platform linux-g++ 指的是你在什么机器上编译这些文件;
  • -xplatform 指的是程序要运行在什么平台,linux-g++会用来编译一些使用工具;
  • -mtdev 用于多点触摸,-evdev 用于鼠标键盘;

生成 MakeFile 文件之后,依次进行:

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目录下。

Qt库对接海思平台

linuxfb 插件修改重编译

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,配置交叉编译环境:

  • Compliers选项,增加一个编译器,配置该编译器的路径为相应的arm-himix200-linux-g++的路径,,我的路径是arm-himix200-linux/bin/下。
  • Qt Versions选项,增加一个qmake工具,Qt中通过qmake编译.pro文件来生成Makefile。配置该qmake工具路径为qt-5.5.1/bin/qmake, 该qmake是使用arm-himix200-linux-g++编译后生成的工具类,专门使用在3519平台上,用于生成相应的Makefile。
  • Kits,增加一个Kit,在compiler和Qt Version中选中步骤1,2中配置的选项。

测试

创建一个简单的qt程序,在.pro中添加海思相关的库和头文件,并使用qmake手动生成makefile:

qt-5.5.1/bin/qmake *.pro -o Makefile

接着make并生成可执行文件,将文件拷贝到nfs系统的/home目录下,工程可以参考文末的下载程序,接着就可以执行程序。

hifb 叠加

目的是将qt的GUI与海思的MPI分离,在视频层上叠加上图形层。

此部分的工作,需要在linuxfb上启用hifb

另外,设置QT界面透明显示

(1) 修改qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp

    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);
}

参考程序下载

海思3519A 移植 Qt 5.5.1的更多相关文章

  1. 海思3519A 移植ffmpeg

    文件下载 下载x264 git clone git://git.videolan.org/x264.git 下载ffmpeg git clone git://source.ffmpeg.org/ffm ...

  2. 海思3519A上移植OpenCV3.x

    环境安装与准备 下载opencv3.4.1. 或者 下载opencv3.2.0. 进入到opencv所在的目录新建目录build,install 安装cmake: apt-get install cm ...

  3. 海思 3520D 移植Qt4.5.3 一

    一.移植Qt4.5.3  1.获得 Qt4.5.3 的源码Qt4.5.3源码的原始包 qt-embedded-opensource-src-4.5.3.tar.gz 将其复制到 /opt 下,     ...

  4. libx264开发笔记(一):libx264介绍、海思平台移植编译

    前言   在编译ffmpeg时,使用到h264编码时是需要依赖libx264的,本文章是将将libx264作为静态库移植到海思上.   相关博客 <Qt开发笔记之编码x264码流并封装mp4(一 ...

  5. 海思hi3518 移植live555 实现H264的RTSP播放

    用海思的交叉编译工具交叉编译live555 ,结合海思例子venc中的H264部分,完成RTSP的视频数据发布. 用vlc可以播放,但是实时性比较差,慢了5秒

  6. 海思3519A 开发环境设置相关

    设置板卡和虚拟机的网络参数 setenv serverip 192.168.1.107 setenv ipaddr 192.168.1.10 setenv gatewayip 192.168.1.1 ...

  7. 海思3559A QT 5.12移植(带webengine 和 opengl es)

    海思SDK版本:Hi3559AV100_SDK_V2.0.1.0 编译器版本:aarch64-himix100-linux-gcc 6.3.0(这个版本有点小问题,使用前需要先清除本地化设置) $ e ...

  8. QT-Embedded-4.5.3在海思35xx上移植

    QT4.5.3在海思3520A上移植步骤-修订版 2015年3月29日星期日, 16:59:03 1.首先要保证已经安装了海思的交叉编译器: #arm-hi  + Tab key to show wh ...

  9. FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台

    FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待   前言   将ffmpeg移植到海思H ...

随机推荐

  1. CloudStack 安装时需要的第三方包

    1.mysql-connector-java 2.jakarta-commons-daemon-jsvc 3.jsvc   rpm -ivh cloudstack-common-4.1.1-0.el6 ...

  2. code1174 靶形数独

    主要是优化搜索顺序 从选择较少的点开始,可以大大提高效率 在search(x,y)找点的时候,对于一个空点(x y),设置一个评分score: score=min{ 横线x上能填的数字个数,竖线y上. ...

  3. 洛谷 P2569[SCOI2010]股票交易(动规+单调队列)

    //只能写出裸的动规,为什么会有人能想到用单调队列优化Orz 题目描述 最近lxhgww又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律. 通过一段时间的观察,lxhgww预测 ...

  4. Anaconda 安装和配置

    Anaconda 安装和配置 1. Anaconda 安装 Anaconda说明及安装过程:Anaconda详细安装使用教程 2. Anaconda和Pip源修改 Anaconda源修改:打开Anac ...

  5. Spring Boot☞ 统一异常处理

    效果区:  代码区: package com.wls.integrateplugs.exception.dto; public class ErrorInfo<T> { public st ...

  6. Sublime Text 2 安装配置插件

    最近学习python,看网上推荐用sublime text2挺方便,就学习了一下对sublime text2 安装插件,先放在这里,以备以后查找 根据晚上资料修改,原文请看这里 Python的自动补全 ...

  7. CentOS 7.2配置Apache服务httpd(上)

    http://www.jb51.net/article/97434.htm 二.安装Apache httpd 安装httpd以配置Web服务器, HTTP使用80 / TCP ? 1 2 3 4 5 ...

  8. javascript总结39: 元素获取的常见问题

    1 定义id属性的元素,不获取直接使用 由于id名具有唯一性,部分浏览器支持直接使用id名访问元素,但不是标准方式,生产环境下不推荐使用. 2 元素是对象 获取到的元素是DOM对象 ,DOM对象也有数 ...

  9. 启动Hadoop HDFS时的“Incompatible clusterIDs”错误原因分析

    "Incompatible clusterIDs"的错误原因是在执行"hdfs namenode -format"之前,没有清空DataNode节点的data目 ...

  10. unity 小地图的制作

    利用 Transform.InverseTransformDirection  变换位置从世界坐标到自身坐标. 以第一人称控制器为坐标原点(忽视y轴),x轴z轴转为屏幕坐标. 若物体在地图范围外,可以 ...