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

相关推荐
姚不倒3 分钟前
Keepalived 系列(二):生产最佳实践与面试考点
运维·keepalived·haproxy
pt10434 分钟前
网络自动化Python课程:利用Cisco NSO编排网络服务
运维·网络·自动化
tedcloud1239 分钟前
OpenLogi 怎么搭建?用 Rust 打造一个轻量的 Logitech 外设管理工具
linux·运维·服务器·开发语言·后端·rust·开源
AAA代码批发商14 分钟前
Days 39 Linux C 开发之 SQLite 数据库完整学习笔记
linux·c语言·数据库
七夜zippoe1 小时前
DolphinDB 运维工具实战:自动化脚本体系设计与落地(2.0.x)
运维·dolphindb·自动化脚本·体系设计·体系落地
玉&心1 小时前
在Docker中部署前端和后端的实现
运维·docker·容器
额额额对了1 小时前
Linux 数据库开发实战:使用 C 语言与 SQLite3 构建轻量级终端词典
linux·数据库·oracle
爱笑鱼1 小时前
Android 系统启动机制(六):Zygote 创建 App 为什么走 Socket?哪些是源码事实,哪些是架构解释?
android·linux
秋田君1 小时前
Qt_QMediaPlayer类与QMediaPlaylist类
开发语言·qt
2601_962299881 小时前
Linux下运行Python脚本
linux·python·ubuntu·脚本·命令