交叉编译QT6时configure无法识别目标设备已安装依赖库如何解决
交叉编译Qt6无法检测sysroot中依赖库的解决方案
核心问题原因
你的交叉编译工具链中pkgconfig搜索路径缺少Debian armhf架构专属的多架构路径,Debian将armhf架构的第三方库及对应的pkgconfig配置文件默认存放在/usr/lib/arm-linux-gnueabihf/路径下,你原配置仅覆盖了通用路径,因此无法找到对应依赖。
具体解决步骤
- 第一步:修改交叉编译工具链文件的pkgconfig搜索路径
将工具链中PKG_CONFIG_LIBDIR配置行修改为以下内容,加入armhf多架构pkgconfig路径:set(ENV{PKG_CONFIG_LIBDIR} ${CMAKE_SYSROOT}/usr/lib/arm-linux-gnueabihf/pkgconfig:${CMAKE_SYSROOT}/usr/lib/pkgconfig:${CMAKE_SYSROOT}/usr/share/pkgconfig) - 第二步:修复sshfs挂载sysroot的符号链接问题
sshfs挂载的远程根文件系统中默认保留绝对路径符号链接,会误指向你本地主机的文件路径,导致依赖检测失败。你可以使用sysroot-relativelinks脚本将sysroot内所有绝对路径软链改为相对路径,在sysroot目录下执行该脚本即可。 - 第三步:验证pkgconfig路径配置有效性
在本地主机执行以下测试命令,确认可以正常识别sysroot内的libudev依赖:
命令正常输出PKG_CONFIG_SYSROOT_DIR=/home/jgnoss/Devel/bbb/sysroot PKG_CONFIG_LIBDIR=/home/jgnoss/Devel/bbb/sysroot/usr/lib/arm-linux-gnueabihf/pkgconfig:/home/jgnoss/Devel/bbb/sysroot/usr/lib/pkgconfig:/home/jgnoss/Devel/bbb/sysroot/usr/share/pkgconfig pkg-config --libs libudev-ludev即代表路径配置正确。如果仍报错,可先在BeagleBone设备上执行dpkg -L libudev-dev | grep \.pc找到libudev.pc的实际存放路径,再将对应路径补充到PKG_CONFIG_LIBDIR中即可。 - 第四步:补全编译器架构参数
将工具链中被注释的QT_COMPILER_FLAGS配置打开,填写适配BeagleBone Cortex-A8内核的编译参数:set(QT_COMPILER_FLAGS "-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard") - 第五步:清理构建缓存重新执行configure
完全清空qt_bbb_build目录下的所有内容,再重新执行你的configure命令即可正常识别所有依赖。
内容的提问来源于stack exchange,提问作者jgnoss
相关产品推荐
相关产品推荐

