Boost链接错误:未定义对GLIBCXX_3.4的引用。

7
我正在尝试在Ubuntu下使用Clang连接Boost库,但遇到以下错误:
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_filesystem.a(operations.o): undefined reference to symbol '_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4'
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我已经在CMake中添加了find_package(Boost COMPONENTS file_system, system)。你知道是什么原因导致了这个错误吗?

1
https://dev59.com/-GIj5IYBdhLWcg3wxnyd - user2288008
我已经检查了CMake生成的构建命令,链接在对象之后。 - Michał Dębski
1个回答

9

这个错误是由于使用gcc标准库libstdc++编译Boost,而我正在使用clang libc++进行编译。

之前我使用的是通过apt-get下载的Boost。从boost.org下载源代码,手动使用clang及其标准库进行编译,解决了这个问题。


1
当我从g++切换到clang++时,我收到了类似的消息。我不小心打错了clang(只有C语言/自动编译器),这意味着它不能正确地与libc++配合使用。 - alfC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接