1.问题描述:
完成 PCL、VTK 搭建后(https://mp.csdn.net/mp_blog/creation/editor/139858438),笔者运行PCL项目程序中,遇到下面错误:
[build] /usr/bin/ld: /usr/lib/x86_64-linux-gnu/libvtkCommonCore-9.1.so.9.1.0: undefined reference to `std::condition_variable::wait(std::unique_lock<std::mutex>&)@GLIBCXX_3.4.30'
[build] collect2: error: ld returned 1 exit status
2.问题分析:
这个错误信息表明链接器(ld
)在尝试链接 libpcl_io.so
库时遇到了问题。具体来说,它找不到 std::condition_variable::wait(std::unique_lock<std::mutex>&)
函数的定义,这是 C++ 标准库中的一部分,属于 libstdc++
。
错误中的 @GLIBCXX_3.4.30
表示这个符号是在 libstdc++
的版本 3.4.30 中定义的。这通常意味着你的系统中安装的 libstdc++
版本低于所需的版本。
std::condition_variable::wait
是 C++11 中引入的,所以如果您的系统上的 GCC 版本低于 4.8(C++11 支持的最低版本),或者即使版本高于 4.8 但是使用的是旧的 GLIBCXX,那么可能会出现这个问题。
3.解决:
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
参考文章:
undefined reference to ... @GLIBCXX_3.4.22_undefined reference to glibcxx-CSDN博客