按照网上的教程报错以下:
①在编辑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命令,这次编译耗费一个多小时,好在编译成功,再进行安装,无报错信息,结果如下:



5674

被折叠的 条评论
为什么被折叠?



