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

相关推荐
johnny2336 小时前
运维管理面板:AcePanel、OpenOcta、DeepSentry
运维
青梅橘子皮6 小时前
Linux---基本指令
linux·运维·服务器
REDcker7 小时前
Linux信号机制详解 POSIX语义与内核要点 sigaction与备用栈实践
linux·运维·php
cui_ruicheng8 小时前
Linux进程间通信(三):System V IPC与共享内存
linux·运维·服务器
蚰蜒螟8 小时前
深入 Linux 内核同步机制:从 futex 到 spinlock 的完整旅程
linux·windows·microsoft
运维全栈笔记8 小时前
Linux安装配置Tomcat保姆级教程:从部署到性能调优
linux·服务器·中间件·tomcat·apache·web
小短腿的代码世界8 小时前
Qt日志系统深度解析:从qDebug到企业级日志框架
开发语言·qt
dllmayday9 小时前
Linux 上用终端连接 WiFi
linux·服务器·windows
ACP广源盛139246256739 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
峥无10 小时前
Linux系统编程基石:静态库·动态库·ELF文件·进程地址空间全景图
linux·运维·服务器