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

相关推荐
SkyWalking中文站31 分钟前
认识 Horizon UI · 17/17:安装与迁移
运维·监控·自动化运维
SkyWalking中文站1 小时前
认识 Horizon UI · 16/17:八种语言的本地化
运维·监控·自动化运维
郝学胜-神的一滴1 小时前
CMake 038:OBJECT目标复用编译+Linux动态库版本自动化管理
linux·c++·程序人生·软件工程·软件构建·cmake·工程配置
单位圆的日常1 小时前
FRP反向隧道实现异地SSH家用Linux
linux·运维·ssh·frp
初阳7851 小时前
【Qt】系统相关(3)——多线程
qt
小比特_蓝光1 小时前
匿名管道+进程池
linux
BS_Li2 小时前
【Linux网络编程】NAT、代理服务、内网穿透
linux·网络·智能路由器
龙萱坤诺2 小时前
Claude Fable 5 重新开放:最强模型回归
大数据·运维·人工智能
tjl521314_212 小时前
Git SSH Host Key Verification Failed 问题排查与解决
运维·git·ssh
杨云龙UP2 小时前
Windows SQL Server 备份无法传输至异地共享目录排查处理
运维·服务器·数据库·windows·共享·smb·异地备份传输