You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为arm64架构树莓派4编译Qt 5.15.2时无法链接交叉编译的opengl_es2

树莓派ARM64架构编译Qt 5.15.2 OpenGL链接问题说明

核心原因

该问题由链接器对不同类型依赖的搜索路径规则差异导致:

  • -L参数仅用于搜索编译命令中通过-l显式指定的直接依赖库,你此处显式声明的依赖只有-lGLESv2,因此链接器只会用-L路径查找libGLESv2.so,不会用它查找libGLESv2.so自身依赖的libglapi.so.0这类间接依赖库。
  • 链接器搜索间接依赖的优先级为:-rpath-link指定路径 > -rpath指定路径 > 交叉编译目标架构的默认系统路径。
  • 你的libglapi.so.0存放在自定义的stage编译目录,不属于交叉编译的默认系统搜索路径,因此默认链接时找不到该库。添加-rpath参数后,该路径被链接器纳入间接依赖搜索范围,因此可以正常完成链接。

注意:-rpath的设计目的是写入二进制文件作为运行时库搜索路径,你当前传入的是编译环境的stage目录路径,该路径在烧录到树莓派实际运行时不存在,因此更规范的做法是编译阶段使用-rpath-link指定编译时间接依赖搜索路径,避免运行时报错。

Qt编译修复方案

执行configure命令时添加对应链接参数即可解决该问题:

./configure \
# 保留你原有的所有configure参数不变 \
QMAKE_LFLAGS="-Wl,-rpath-link,/build/pi4/stage/usr/lib -Wl,-rpath-link,/build/pi4/stage/usr/lib/aarch64-linux-gnu"

如果存在其他系统库找不到的问题,建议同时配置交叉编译sysroot参数,同时修正pkg-config的sysroot配置:

export PKG_CONFIG_SYSROOT_DIR=/build/pi4/stage
./configure \
-sysroot /build/pi4/stage \
# 其余原有参数和上述QMAKE_LFLAGS参数

内容的提问来源于stack exchange,提问作者Renat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:30:02