gcc 5.2.1 _GLIBCXX_USE_CXX11_ABI

时间:2016-03-23 22:44:14

标签: c++

编辑:我正在使用gcc 5.2.1所以显然现在默认选择了一个新的libstdc ++库ABI库。当我试图编译我的代码时,可能是导致此错误消息(与 std :: __ cxx11 相关)的问题:

/tmp/ccVIU5fG.o: In function `main':
2D_interpolations.cc:(.text+0x76): undefined reference to `mio::Config::Config(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
2D_interpolations.cc:(.text+0x151): undefined reference to `mio::IOUtils::convertString(mio::Date&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double const&, std::ios_base& (*)(std::ios_base&))'

我尝试在.cc文件的开头添加以下行

#define _GLIBCXX_USE_CXX11_ABI 0

然后我就可以编译了。但是我收到了与未定义符号相关的错误。使用

c++filt <the undefined symbol>

事实证明,在添加 #define _GLIBCXX_USE_CXX11_ABI 0

之前,未定义的符号实际上与我收到错误的位置完全相同。
mio::Config::Config(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)

通过检查是否存在其他未定义的符号,我发现其中也缺少一个(也在上一个错误中)

mio::IOUtils::convertString(mio::Date&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double const&, std::ios_base& (*)(std::ios_base&))

我知道已经有一些类似的帖子了但是答案对我来说太“理论化”了,因为我刚接触c ++并且我对计算机一无所知......如果你有任何建议可以提供帮助,那你就是'欢迎!

谢谢!

1 个答案:

答案 0 :(得分:1)

我设法最终解决了所有问题,所以我在这里发布了解决方案,以防有人感兴趣

要检查我使用的代码库,我使用了命令

ldd -r -d <name of my code file>

通过路径正确检测到第三方lib Im使用

/usr/local/lib/<name of the library file>

但它显然不是一条好路(不要问我为什么),即使得到认可。一个不错的选择是将库文件更改为另一个位置:

/usr/lib/<name of the library file>

它现在完美无缺!