海思3559移植QT5.14.2完整步骤版(支持OPENGL)

按照网上的教程报错以下
①在编辑config文件中加入了-no-opengl,后续在执行make install时报错:
在这里插入图片描述
②去掉-no-opengl后,在执行./configure这一步报错:

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.

参考海思QT开发系列(四):Hi3559 Qt+OpenGL移植 - 灰信网(软件开发博客聚合)
海思QT开发系列(一):3559平台QT移植_qt-everywhere-src-5.14.2.tar.xz-CSDN博客

完善以下执行步骤,供学习参考

1. 环境

主机环境:Ubuntu 20.04;
板端:hi3559av100
交叉编译环境:aarch64-himix100-linux-
QT版本5.14.2 下载qt-everywhere-src-5.14.2.tar.xz

2.解压:

tar xvf qt-everywhere-src-5.14.2.tar.xz

3.修改config

cd qt-everywhere-src-5.14.2/qtbase/mkspecs/
cp linux-aarch64-gnu-g++/ linux-aarch64-himix100-g++/ -r
cd linux-aarch64-himix100-g++
vim 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

同时将qmake.conf文件中“aarch64-linux-gnu”全部替换为“aarch64-himix100-linux”
修改结果如下:
在这里插入图片描述

4.制作软链接

到交叉编译器根目录(/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

5.拷贝GPU头文件和库

将海思SDK中 mpp/component/gpu/release 目录下的 include 和 lib 目录拷贝到 /opt/hisi-linux/x86-arm/aarch64-himix100-linux/usr 目录下,可以使用以下命令:

cp -r /path/to/mpp/component/gpu/release/include /opt/hisi-linux/x86-arm/aarch64-himix100-linux/usr/  
cp -r /path/to/mpp/component/gpu/release/lib /opt/hisi-linux/x86-arm/aarch64-himix100-linux/usr/

请将 /path/to/ 替换为实际的路径。

6.新建脚本文件并执行

在qt-everywhere-src-5.14.2目录下新建脚本文件

vi 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 \

在 vi 中保存并退出:
按 Esc 键。
输入 :wq 然后按 Enter 保存并退出。
给脚本添加可执行权限:

chmod +x hayson_configure.sh

运行脚本

./hayson_configure.sh

配置成功得到以下结果:
.

7.编译

make -j$(nproc)
make install

$(nproc) 代表核心个数,这步操作会非常慢,我执行make -j8耗时50多分钟。

8.编译报错及解决方法:

然而在执行make时中间报错:

aarch64-himix100-linux-g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make[5]: *** [Makefile:35388:.obj/src/mbgl/renderer/layers/render_symbol_layer.o] 错误 4
make[5]: *** 正在等待未完成的任务....

这个错误通常发生在编译过程中,尤其是处理大型项目或复杂代码时,编译器(cc1plus)会消耗大量内存。如果系统的内存不足,操作系统可能会强制杀死编译进程。
这个报错是夹杂在中间的,很容易忽略掉,导致后续执行安装的时候缺部分库,执行make install报错:

在这里插入图片描述
执行 make clean ,将构建目录恢复到“干净”状态,相当于删除了所有编译产生的临时文件和缓存文件。

make clean

随后增大虚拟机内存,操作步骤:关闭虚拟机——点击虚拟机设置——硬件——内存,如红框中所示,调为16GB,重新打开虚拟机可生效。
在这里插入图片描述

再次执行make命令,这次编译耗费一个多小时,好在编译成功,再进行安装,无报错信息,结果如下:在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值