海思QT开发系列(三):Hi3559 Qt Sample开发板运行测试
海思QT开发系列(四):Hi3559 Qt+OpenGL移植
参考
- 海思3559A QT 5.12移植(带webengine 和 opengl es)
- Qt5.9.7 移植到Hi3536,支持OpenGL和tsLib
- 海思开发板hi3559移植带opengl的qt并成功运行血泪史
- EGL library doesn’t support Emulator extensions—问题解决记录
- Qt5.9.3源码的交叉编译—Jetson TX1
- 《GPU 开发用户指南》
网上资料如参考3小彭同学所言都不完整,参考这位同学的流程,陆续花了2个下午跑通全流程,供大家参考!
海思GPU环境准备
- 请详读海思文档《GPU 开发用户指南》
- 运行mpp\sample\gpu下的sample,确认GPU环境ok
这部分比较简单,安装文档一步步来就ok,本人编译环境有做过内核配置调整,导致无法成功编译驱动,耽误了几个小时,记住使用3559原生SDK配置就ok!!!
最后在release下会生成三个目录
include ko lib
inclue 待会交叉编译OpenGL会用到
ko 需要拷贝到开发板加载
lib 交叉编译和运行都需要
QT交叉编译支持OpenGL
方法一
方法一是错误示范!!!
这是我踩过的坑,直接点的盆友可以直接看方法二干货!
- 修改congif指定头文件路径
qtbase/mkspecs/linux-aarch64-himix100-g++/qmake.conf
在这里指定QMAKE_INCDIR_OPENGL_ES2等三个宏,方法用尽,各种路径指定,configure就是不能enable OpenGL,尴尬!!!
OpenGL:
Desktop OpenGL ....................... no
OpenGL ES 2.0 ........................ no
OpenGL ES 3.0 ........................ no
OpenGL ES 3.1 ........................ no
OpenGL ES 3.2 ........................ no
ERROR: Feature 'opengles2' was enabled, but the pre-condition '(config.win32 && !features.opengl-dynamic) || (!config.watchos && !features.opengl-desktop && libs.opengl_es2)' failed.
ERROR: Feature 'eglfs' was enabled, but the pre-condition '!config.android && !config.darwin && !config.win32 && !config.wasm && features.egl' failed.
ERROR: The OpenGL functionality tests failed!
You might need to modify the include and library search paths by editing QMAKE_INCDIR_OPENGL[_ES2],
QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your platform.
Check config.log for details.
如果发生类似这样的错 安装完相关依赖库之后 记得运行 rm config.cache来删除缓存的配置
来源: https://www.cnblogs.com/ahuo/p/11286843.html
这个没有用
后面,仔细研究了一些参考1的文章,找到了正确的打开方式!
前期观此文章排版一言难尽,直接略过了!看文章要仔细,也建议大家写记录的话重要的步骤,一定要特殊说明,最好介绍下缘由这样修改的缘由。
方法二
新增交叉编译器软链接
这一步是关键
方法一里面,总找到OpenGL的头文件定义,缘由我不知道,这种用到的是另一种方法,直接将引用放到交叉编译器的相关目录,这些路径configure的时候肯定要遍历的,而我们3559的编译器有些usr等目录更深,所以,做一些软连接支持!
到交叉编译器根目录(/opt/hisi-linux/x86-arm/aarch64-himix100-linux/)
- 将target/usr 链接到根目录usr
cd /opt/hisi-linux/x86-arm/aarch64-himix100-linux
sudo ln -s ./target/usr usr
- 将aarch64-linux-gnu链接到/usr/lib下
sudo ln -s /opt/hisi-linux/x86-arm/aarch64-himix100-linux/aarch64-linux-gnu /usr/lib/aarch64-linux-gnu
拷贝GPU头文件和库
将海思SDK里mpp/component/gpu/release目录下的include目录和lib目录拷贝到opt/hisi-linux/x86-arm/aarch64-himix100-linux/usr目录下
qmake 支持
在qtbase/mkspecs/linux-aarch64-himix100-g++/qmake.conf文件加入对mali的支持
# gpu
QMAKE_LIBS_EGL += -lmali
QMAKE_LIBS_OPENGL_ES2 += -lmali
DEFINES += EGL_EGLEXT_PROTOTYPES GL_GLEXT_PROTOTYPES EGL_FBDEV EGL_API_FBDEV EGL_API_MIDGARD PLATFORM_MALI700
配置QT源文件,支持OpenGL
QT根目录新建脚本文件hayson_configure.sh
增加执行权限
配置如下:
#!/bin/bash
./configure -v \
-opensource -confirm-license \
-release -shared \
-make libs \
-strip \
-xplatform linux-aarch64-himix100-g++ \
-prefix $PWD/qt5.14.2_hi3559av100_release \
-opengl es2 \
-eglfs \
-no-gcc-sysroot -no-pkg-config \
-nomake examples -nomake tests \
-no-ico -nomake examples \
-no-sse2 -nomake tools \
-no-iconv -no-gif \
-no-rpath -no-pch \
-no-avx -no-openssl \
-no-cups -no-dbus \
-no-glib -no-tslib \
配置结果
编译
make -j$(nproc)
make install
创作不易,欢迎点赞!海星出品,转载请注明出处!