原理性请参考如下文章
安装python环境(新的qt版本加入了python的支持):
sudo apt-get install python
sudo apt-get install python-dev
sudo apt-get install python-pip
树莓派学习::qt5交叉编译(armv8 64位)._dieju8330的博客-CSDN博客_armv8 qt
这里对上**补充
QT5.13.0 的./configure参数解释(最新版本)_有点甜0612的博客-CSDN博客
QT5.6编译./configure参数的详细解释_明卿的博客-CSDN博客
pkgconfig使用https://www.jianshu.com/p/0faea1f431ec
设置连接库路径
export LD_LIBRARY_PATH=/mnt/usr/lib/aarch64-linux-gnu:/mnt/lib/aarch64-linux-gnu:/mnt/usr/lib:/mnt/usr/share/:/mnt/usr/local/lib/:/mnt/usr/lib/openmpi/lib/
注意:不设置目录连接库路径,编译出的qmake工具生成的Makefile文件中的LFLAGS选型 需要各个项目的pro使用QMAKE_LFLAGS单独配置。否则无法连接。
编译项配置
#!/bin/bash ./configure \ -prefix /root/qt/arm_lib \ -extprefix /root/qt/arm_lib \ -sysroot /mnt \ -xplatform linux-aarch64-gnu-g++ \ -pkg-config \ -release \ -opensource \ -confirm-license \ -icu \ -tslib \ -opengl \ -alsa \ -pulseaudio \ -no-mirclient \ -no-slog2 \ -qt-xcb \ -qt-freetype \ -qt-harfbuzz \ -qt-pcre \ -qt-zlib \ -qt-libpng \ -qt-libjpeg \ -qt-xkbcommon-x11
讯享网
-sysroot 表示目标机的文件系统,交叉编译中的编译、连接需要目标机的依赖头文件和动态库
交叉编译中的 --sysroot 等等在编译时的作用 - 微信公众号--共鸣圈 - 博客园
制作文件系统建议使用sshfs
Ubuntu - sshfs 远程服务器目录挂载工具 - AI备忘录
挂载命令如下
sudo sshfs -o transform_symlinks -o follow_symlinks -o allow_other,default_permissions tyzc@192.168.35.157:/ /mnt
qtwebengine模块编译
环境库准备:
Ubuntu20.04编译QT5.14的qtwebengine过程,支持Mp4多媒体播放_vincehaha的博客-CSDN博客_ubuntu编译qtwebengine
当然装基础库也可将要的库写到一起格式如下
sudo apt-get install 库1 库2,这里做的目的提供安装效率。安装库不要犹豫,能安装则安装,毕竟减少排查的花费的时间。
sudo apt-get install bison build-essential gperf flex ruby python libasound2-dev libbz2-dev libcap-dev libcups2-dev libdrm-dev libegl1-mesa-dev libnss3-dev libpci-dev libpulse-dev libudev-dev libxtst-dev gyp ninja-build libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libfontconfig1-dev libxss-dev libwebp-dev libjsoncpp-dev libopus-dev libminizip-dev libavutil-dev libavformat-dev libavcodec-dev libevent-dev libdbus-1-dev qtdeclarative5-private-dev qtbase5-private-dev
缺少对应的库按照如下寻找:
libm.a和libm.so怎么装? - Ubuntu中文论坛
二次梳理rk3399 linux ubuntu平台缺失库
讯享网sudo apt-get install libc6-dev sudo apt-get install libdbus-1-dev sudo apt-get install libudev-dev sudo apt-get install libdlm-dev sudo apt-get install libglib2.0-dev sudo apt-get install libdouble-conversion-dev sudo apt-get install libssl1.0-dev sudo apt-get install libbluetooth-dev sudo apt-get install libasound2-dev sudo apt-get install libopenal-dev sudo apt-get install libatspi2.0-dev sudo apt-get install libgegl-dev sudo apt-get install libxi-dev sudo apt-get install libgbm-dev sudo apt-get install libatspi2.0-dev sudo apt-get install libegl1-mesa-dev sudo apt-get install libinput-dev sudo apt-get install libmtdev-dev sudo apt-get install libxkbcommon-dev sudo apt-get install libcups2-dev sudo apt-get install libgypsy-dev sudo apt-get install libgstreamer1.0-dev sudo apt-get install libgstreamer0.10-dev sudo apt-get install roger-router-cli sudo apt-get install ninja-build sudo apt-get install libopus-dev sudo apt-get install libwebp-dev sudo apt-get install libfreetype6-dev sudo apt-get install libharfbuzz-dev sudo apt-get install libfontconfig1-dev sudo apt-get install libjpeg9-dev / sudo apt-get install libjpeg62-dev sudo apt-get install libpng12-dev sudo apt-get install libxcb1-dev sudo apt-get install libgl-dev sudo apt-get install libwayland-dev sudo apt-get install libgtk-3-dev sudo apt-get install libraspberrypi-dev sudo apt-get install libx11-xcb-dev sudo apt-get install libdrm-dev sudo apt-get install libxcb-glx0-dev sudo apt-get install freetds-dev sudo apt-get install libassimp-dev sudo apt-get install libre2-dev
运行之后,Qt本身会检测你当前环境是否能满足对应模块要求,会产生一个config.log文件如下: 想问这个终端工具叫什么请细细看下图 可以看到哦
学会看这个文件 要减少你搜索的时间。。。。。。。
上图编译命令是g++不通过, 十有八九是你没有安装库,当然你可能安装了当时编译时默认搜索的路径 感知不到。查看编译器头文件默认路径如下:
echo 'main(){}'|aarch64-linux-gnu-g++ -E -v -

找不到头文件库文件的 可能都是不在对应的路径下。
如果你是交叉编译,可以先使用本地编译器g++验证一下是否能编译 ,证明本机上有对应的头文件只要你cp一下到对应路径即可,若是库找不到,请在arm平台上找。千万记住。

讯享网apt-get install libre2-dev
上命令是解决 re2的缺失

ICU二进制库
https://github.com/unicode-org/icu/releases
https://doc.qt.io/qt-5/windows-requirements.html
Compiling-ICU-with-MinGW - Qt Wiki


编译命令
./runConfigureICU -h ./runConfigureICU Linux/gcc make make install
默认安装到/usr/local 需要移动到/usr下/bin、include、lib 请仔细 涉及到 pkgconfig 测试发现涉及的库 55 70 68版本
编译完成,Qt还是检测没有icu库,查看config.log有如下错误


该函数所在的库 -licui18n一看没有软连接 这样写实际系统认识的库名称为libicui18n.so。坑逼。。。。。我浪费了一个小时啊

交叉编译 qtwebengine最终编译成果
配置环境宿主机编译环境
OSError: [Errno 2] No such file or directory
安装以下几个库:
apt-get install gperf flex bison
编译命令
讯享网目录/qmake -o Makefile qtwebengine.pro
单独设置两个环境变量
单独编译模块由于没有configure文件,依赖的头文件/库都得通过pkg-config寻找
export PKG_CONFIG_LIBDIR=/mnt/usr/lib/pkgconfig:/mnt/usr/share/pkgconfig:/mnt/usr/lib/aarch64-linux-gnu/pkgconfig:/mnt/usr/lib/openmpi/lib/pkgconfig:/mnt/usr/local/lib/pkgconfig export PKG_CONFIG_SYSROOT_DIR=/mnt

这里会给出明确的提示需要什么。可以根据具体提示下载源码包或者使用apt-get install命令( 优先选择)。
这里给一个排除依赖库找不到的方法

这里要主要PKG_CONFIG_LIBDIR和目标机上有所不同了。
export PKG_CONFIG_LIBDIR=/mnt/usr/lib/pkgconfig:/mnt/usr/share/pkgconfig:/mnt/usr/lib/aarch64-linux-gnu/pkgconfig:/mnt/usr/lib/openmpi/lib/pkgconfig:/mnt/usr/local/lib/pkgconfig


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/39336.html