起因
项目从rk3399板卡改为rk3588后原先的qtwebengine库直接无法使用了,故实验在新的板卡下举行编译。
编译环境
板卡: rk3588
体系: unbuntu 20.04 LTS
gcc version: aarch64-linux-gnu 9.4.0
源码
下载地址:https://download.qt.io/new_archive/qt/5.12/5.12.8/single/
下载到板块后解压
- sudo tar -xf qt-everywhere-src-5.12.8.tar.xz
- cd qt-everywhere-src-5.12.8
复制代码 配置
由于配置的信息相当多,发起创建一个主动配置脚本,比如auto.sh,方便根据自己的体系举行参数调解。
- sudo touch auto.sh
- sudo chmod 755 auto.sh
- sudo vim auto.sh
复制代码- #auto.sh
- ./configure -prefix /root/honglingfeng/arm-qt-5.12.8 \
- -opensource \
- -confirm-license \
- -release \
- -strip \
- -shared \
- -optimized-qmake \
- -c++std c++11 \
- --rpath=no \
- -pch \
- -webengine-proprietary-codecs \
- -skip qt3d \
- -skip qtactiveqt \
- -skip qtandroidextras \
- -skip qtcanvas3d \
- -skip qtconnectivity \
- -skip qtdatavis3d \
- -skip qtdoc \
- -skip qtgamepad \
- -skip qtlocation \
- -skip qtmacextras \
- -skip qtnetworkauth \
- -skip qtpurchasing \
- -skip qtremoteobjects \
- -skip qtscript \
- -skip qtscxml \
- -skip qtsensors \
- -skip qtspeech \
- -skip qtsvg \
- -skip qttools \
- -skip qttranslations \
- -skip qtwayland \
- -skip qtwinextras \
- -skip qtx11extras \
- -skip qtxmlpatterns \
- -skip qtgraphicaleffects \
- -make libs \
- -nomake tools \
- -nomake tests \
- -gui \
- -widgets \
- -dbus-runtime \
- --glib=no \
- --iconv=no \
- --pcre=qt \
- -qt-zlib \
- -no-vulkan \
- -no-openssl \
- --freetype=qt \
- --harfbuzz=qt \
- -opengl es2 \
- -xcb \
- -xcb-xlib \
- -egl \
- -eglfs \
- --pcre=qt \
- -linuxfb \
- -no-tslib \
- -qt-libpng \
- -qt-libjpeg \
- --sqlite=qt \
复制代码 详细configure参数剖析可以参考以下文章:https://blog.csdn.net/qing666888/article/details/79597473
官方英文帮助文档: ./configure --help
注意:每次改变auto.sh内里的参数,记得将config.cache删除后在运行脚本
运行auto.sh脚本举行配置
因为缺少依靠文件,绝大部分情况下configure都无法通过的,即报WARNING: QtXXX will not be built.。所以必须要安装依靠文件,直到不报错为止。
QWebEngine底子依靠
- sudo apt-get install bison flex gperf libdus* dbus* libfontconfig1-dev fontconfig libnss3-dev python2 pkg-config
- sudo apt-get install libicu-dev ninja-build
复制代码 OpenGL相关依靠
- sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev libegl1-mesa-dev freeglut* libgles* libglew*
复制代码 xcb相关依靠
- sudo apt-get install libx11-*
- sudo apt-get install libx11*
- sudo apt-get install libxcb-*
- sudo apt-get install libxcb*
- sudo apt-get install libxkbcommon-devsudo
- sudo apt-get install libxkbcommon-x11-dev
- sudo apt-get install libxcb-xinerama0-dev
- sudo apt-get install libxcb-sync-dev
复制代码 若报Could not find all necessary libraries for qpa-xcb support
发起再安装一遍依靠
- sudo apt-get install bison build-essential gperf flex libasound2-dev\
- libcups2-dev libdrm-dev libegl1-mesa-dev libnss3-dev libpci-dev\
- libpulse-dev libudev-dev nodejs libxtst-dev gyp ninja-build\
- libssl-dev libxcursor-dev libxcomposite-dev libxrandr-dev
复制代码 QtWebEngine库大部分问题都是没有依靠库导致的,如果堕落就安装相关的依靠库即可。
编译
这里要提一下QWebEngine使用了chromium-browser大部分功能,基本第三方库中的chromium都需要编译。rk3588板卡只有8g内存,需要添加10G swap假造内存空间来支持编译。不然容易编译中途因为内存耗尽而中断。
- sudo mkdir /swapfile
- sudo dd if=/dev/zero of=swapfile bs=1G count=10
- sudo mkswap /swapfile
- # 开启
- sudo swapon /swapfile
- # 查看是否启用
- free -h #swap那一栏
复制代码 遇到问题
- WARNING: C++14 support is required in order to build chromium.
- WARNING: QtWebEngine will not be built.
复制代码 可以通过安装chromium-brower办理
- sudo apt update
- sudo apt install chromium-browser
复制代码 引用
1:【Qt编译】ARM环境 Qt5.14.2-QtWebEngine库编译 (完备版)https://blog.csdn.net/Monster_H7/article/details/137630448
2: 交叉编译 Qt5.12 armv8(aarch64) 带 WebEngine - NVIDIA JETSON TX2 https://www.cnblogs.com/zekexiao/p/17681933.html
3:【研究Qt webengine 模块编译】linux 交叉编译qt5.12的webengine模块乐成的条件 https://liucjy.blog.csdn.net/article/details/104422691
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |