移植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文件中
- 编译库时尽量使用生产环境,否则会有意想不到的报错
本文来自博客园,作者:变秃了也就变强了,转载请注明原文链接:https://www.cnblogs.com/lichangyi/p/18984851

浙公网安备 33010602011771号