移植paho-mqtt-cpp库报错"undefined reference to `std::unique_lock<std::mutex>::unlock()@GLIBCXX_3.4.30'"

1、前言

  • 在orangepi5plus上编译了paho-mqtt-cpp库
  • 在飞凌OK3568的虚拟机中Qt应用使用该库
  • Qtcreator编译后报错发生(交叉编译工具链)

2、原因

  • g++编译器动态链接库libstdc++.so.6版本不一致,也就是GCC/G++版本不一致,在香橙派中的GLIBCXX版本最高是GLIBCXX_3.4.30,但是飞凌OK3568上最高却是GLIBCXX_3.4.29导致找不到GLIBCXX_3.4.30符号

    # 查询版本
    strings /usr/lib/aarch64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
    strings /usr/lib/libstdc++.so.6 | grep GLIBCXX
    

3、补充相关知识

  • GCC/G++ 版本 → 编译生成特定版本的 libstdc++.so → 包含特定范围的 GLIBCXX_符号版本
  • 当用 GCC XX编译库时,编译器会引入标记符号为 "@GLIBCXX_符号版本" 这个符号 到so文件中
  • 编译库时尽量使用生产环境,否则会有意想不到的报错
posted @ 2025-07-15 00:04  变秃了也就变强了  阅读(19)  评论(0)    收藏  举报