x86_64 centos7.2 上用aarch64-linux-gnu-gcc4.8.5交叉编译qt5.11.3

脚本配置

export PKG_CONFIG=/wd/qt5/aarch64-pkg-config

export PKG_CONFIG_LIBDIR=/opt/aarch64-sysroot/pkgconfig

export PKG_CONFIG_SYSROOT_DIR=/opt/aarch64-sysroot

export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1

export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1

set -x

#-sysroot /opt/aarch64-sysroot \

./configure -v -pkg-config -prefix /opt/qt5.11.3_arm64 \

-extprefix /opt/qt5.11.3_arm64 \

-opensource \

-confirm-license \

-nomake tests \

-nomake examples \

-release \

-xplatform linux-aarch64-gnu-g++ \

-sysroot /opt/aarch64-sysroot \

-skip qtandroidextras \

-skip qtactiveqt \

-skip qtandroidextras \

-skip qt3d \

-skip qtcanvas3d \

-skip qtcharts \

-skip qtdatavis3d \

-skip qtdeclarative -skip qtimageformats \

-skip qtgamepad \

-skip qtmacextras \

-skip qtmultimedia \

-skip qtnetworkauth \

-skip qtpurchasing \

-skip qtquickcontrols \

-skip qtquickcontrols2 \

-skip qtremoteobjects \

-skip qtscript \

-skip qtscxml \

-skip qtserialbus \

-skip qtserialport \

-skip qtspeech \

-skip qtsensors \

-skip qtsvg \

-skip qtvirtualkeyboard \

-skip qtwayland \

-skip qtwebchannel \

-skip qtwebengine \

-skip qtwebglplugin \

-skip qtwebsockets \

-skip qtwebview \

-skip qtwinextras \

-skip qtxmlpatterns \

-no-opengl \

-openssl-runtime \

-qt-zlib \

-qt-libpng -qt-libjpeg \

-qt-xkbcommon-x11 \

-qt-freetype \

-qt-harfbuzz \

-qpa xcb \

-system-xcb \

-I /opt/aarch64-sysroot/usr/include -L /opt/aarch64-sysroot/usr/lib64

-sysroot /opt/aarch64-sysroot

指定目标aarch64根目录,提供目标机上的依赖库,主要是openssl和xcb,用sshfs挂载到本地目录 /opt/aarch64-sysroot,目标系统是centos7.2的aarch64机器

交叉编译x64本机的pkg-config找不到目标aarch64机器上的依赖库的pc文件,所以需要PKG_CONFIG_XX相关环境变量。

不知道为什么qt死活无法启用本机pkg-config,能找到但是不知道什么原因全局禁用了

为了顺利找到写了个/wd/qt5/aarch64-pkg-config包装脚本

-skip 跳过不需要的组件

-extprefix /opt/qt5.11.3_arm64很重要,交叉编译完成后,安装到本机的位置

如果只是指定了--prefix /opt/qt5.11.3_arm64,最后会安装到sysroot + prefix目录

-openssl-runtime,会检查编译环境中的openssl,但是生成的库不会直接依赖openssl,运行是动态加载,省心

-system-xcb,使用-sysroot /opt/aarch64-sysroot下的xcb-xxx扩展库

-qt-xcb 使用源码中的xcb-xxx扩展库

libxcb始终会在编译系统环境(包括-sysroot路径)中找

xcb库检查过程中各种失败,主要是用了pkgconfig,xcb.pc文件只描述-lxcb,补充-lXau,否则找不到libXau

相关推荐
ziguo112219 分钟前
C/C++ 错误处理全解:从 errno 到 C++ 异常
linux·c语言·c++·windows·visual studio
三8441 小时前
使用Samba/NFS实现文件共享/自动挂载共享目录/autofs自动挂载服务
linux·服务器·网络
高铭杰2 小时前
万物皆可KV(2)SurrealDB 存储布局分析
linux·服务器
Jerry小杰2 小时前
运维神器|单端口搞定多台内网SSH!frp端口复用终极教程
运维·ssh
无小道3 小时前
深入解析操作系统文件缓冲区:页缓存、基数树与f_pos的协同设计
linux·缓存·文件缓冲区
Python私教3 小时前
Blender模型导入Godot完整教程:GLB、BLEND与继承场景怎么选
运维·godot·blender
AOwhisky3 小时前
Linux(CentOS)系统管理入门笔记(第十二期)——系统管理工具与软件包管理(上篇):Cockpit 与 RPM 包管理
linux·运维·笔记·centos·云计算
寒水馨4 小时前
Linux下载、安装godot-4.7.1-stable(附安装包Godot_v4.7.1-stable_linux.x86_64.zip)
linux·游戏引擎·godot·游戏开发·2d游戏·3d游戏·godot engine
Quz4 小时前
QML 基础按钮:Button、RoundButton 与 DelayButton
qt
Quz4 小时前
QML ToolTip 组件:图标、多行文本与阴影
qt