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

问题描述 投票:0回答:2

我正在尝试在 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)

我已将 find_package(Boost COMPONENTS file_system, system) 添加到 cmake 中。知道什么可能导致此错误吗?

c++ boost cmake
2个回答
9
投票

这个错误是因为 Boost 是使用 gcc 标准库 libstdc++ 构建的,而我是使用 clang libc++ 编译的。

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


0
投票

我最近遇到了这个问题,我认为在很多情况下更好的解决方案可能是使用 clang++ 来代替。

如果这是不可能的,我可以通过直接显式链接 std c++ 库来解决该问题。

例如:

clang -lstd=c++17 main.cpp -lstdc++
© www.soinside.com 2019 - 2024. All rights reserved.