海思3519上移植Qt5.5.1

1. 源码下载

网址:http://download.qt.io/archive/qt/5.5/5.5.1/single/

源码包: qt-everywhere-opensource-src-5.5.1.tar.gz


2. 配置生成makefile文件

./configure-prefix /home/chenhui/qt-5.5.1 -release -opensource -confirm-license -static-qt-zlib -qt-libpng -qt-libjpeg -qt-freetype -no-pch -no-avx -no-openssl-no-cups -no-dbus -platform linux-g++ -xplatform linux-hisiv600-linux-g++-no-opengl -no-glib

这里有几点说明下:

(1). 我这里指定使用-static来生成静态库是为了方便程序在板端运行,减少对库加载路径的配置以及文件目录的挂载。执行程序时不需要再设置一堆的环境变量以及挂载库的路径

(2). -qt-zlib -qt-libpng -qt-libjpeg -qt-freetype这几个选项最好使用qt库自带的源码,不然如果系统上没有这个库或者找不到,自行编译这些库后再加入到相关路径上还需要为这些库写依赖文件才能使用,没有依赖文件,链接程序时会报一些插件找不到的错误

(3). -platform linux-g++指的是你在什么机器上编译这些文件,一般都是ubuntu或者centeros,-xplatform指的是程序要运行在什么平台,linux-g++会用来编译一些使用工具,像生成.qch帮助文档的qhelpgenerator,xplatform则指定编译库代码时用的编译器,以及生成make所有的qmake工具

(4). -xplatform 所指定的不是交叉编译工具链的名字,而是交叉编译配置文件的名字,该文件需在/home/chenhui/workspace/qt-everywhere-opensource-src-5.5.1/qtbase/mkspecs目录下,可以拷贝linux-g++,然后根据自己交叉编译工具修改qmake.conf,也可以下载下面我已经自己写好的,arm-hisiv600-linux的编译器可以直接使用

(5). 有时候交叉编译后libpng libjpeg 这两个库不会生成,可以将qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/imageformats下的.pro文件的内容修改成:

!contains(QT_CONFIG, no-jpeg):SUBDIRS += jpeg

!contains(QT_CONFIG, no-gif):SUBDIRS += gif

!contains(QT_CONFIG, no-ico):SUBDIRS += ico

(6). 上述过程编译完后, 会生成若干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目录下。


3. Qt库对接海思平台

1. arm上使用的绘图后端一般都是linuxfb这个插件,这个插件的源码很简单,只是根据环境变量打开一下对应的fb,然后根据参数创建QImage传到上层的图形框架中,所有的绘图输出都会输出到这个QImage。在海思上使用fb之前需要先做一些初始化的工作,需要先初始化MPP系统以及vo,不然直接打开fb会报权限不允许的错误。这里我修改了linuxfb这个库,把初始化MPP和vo放到其中。这里有一点很重要的需要注意,在Qt5上3519初始化fb时像素格式一定要是32位,不然处理不了alpha位,图像是显示不出来的。这部分代码可以自己写,很简单,也可以下载下面我已经写好的

2.修改linuxfb后进qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/linuxfb,重新编译该插件,然后执行make install,这时该linuxfb插件,就是适配好海思平台的了

3.安装Qt Creator,方便我们开发qt程序。sudo apt-get install qt5-deault,安装完成后去到/usr/share/applications下找到Qt的图标,然后运行Qt Creator,点击菜单栏的Tools->option->Build&Run,配置交叉编译环境:

(1)Compliers选项,增加一个编译器,配置该编译器的路径为相应的linux-hisiv600-linux-g++的路径,,一般是/opt/hisi-linux/x86-arm/arm-hisiv600-linux/target/bin下

(2) Qt Versions选项,增加一个qmake工具,Qt中通过qmake编译.pro文件来生成Makefile。配置该qmake工具路径为/home/chenhui/qt-5.5.1/bin/qmake, 该qmake是使用linux-hisiv600-linux-g++编译后生成的工具类,专门使用在3519平台上,用于生成相应的Makefile

(3). Kits,增加一个Kit,在compiler和Qt Version中选中步骤1,2中配置的选项

7. 在qtbase/examples/widgets/mainwindows/mainwindow手动生成下makefile,qmake -0 Makefile *.pro, qmake要加上你安装的路径前缀,然后修改makefile,连接上海思相关的库,注意,连接的库要加在最后,因为linuxfb是最先连接的,不然会报找不到定义的错误。

8. 生成程序后,在板子上export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=720x576,运行程序就可以看到效果了


4.3519移植Qt适配附件

https://download.csdn.net/download/kodecsdn/10388716


你可能感兴趣的:(嵌入式)