mysql移植海思_海思3519A 移植 Qt 5.5.1

源码下载

配置生成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);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值