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

相关推荐
kymjs张涛6 小时前
OpenClaw 学习小组:初识
android·linux·人工智能
程序设计实验室8 小时前
经历分享,发现挖矿木马后,服务器快速备份与重装(腾讯云平台)
linux
Miku1610 小时前
OpenClaw-Linux+飞书官方Plugin安装指南
linux·人工智能·agent
Miku1610 小时前
OpenClaw 接入 QQ Bot 完整实践指南
linux·人工智能·agent
Yogurt_cry15 小时前
[树莓派4B] 闲置近10年的爱普生 L310 打印机爆改无线打印机
linux·物联网·树莓派
爱吃橘子橙子柚子1 天前
3CPU性能排查总结(超详细)【Linux性能优化】
运维·cpu
Johny_Zhao1 天前
OpenClaw中级到高级教程
linux·人工智能·信息安全·kubernetes·云计算·yum源·系统运维·openclaw
Sheffield2 天前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
Sheffield3 天前
Alpine是什么,为什么是Docker首选?
linux·docker·容器