如何解决:/usr/lib/libstdc++.so.6:版本'GLIBCXX_3.4.15'找不到

所以我现在绝望地find一个解决这个问题。 我正在编译一个共享库.so在Ubuntu 32位(尝试在Debian和Ubuntu 64位,但没有任何工作)

我一直得到: /usr/lib/libstdc++.so.6: version ``GLIBCXX_3.4.15' not found每次我尝试加载我的插件都/usr/lib/libstdc++.so.6: version ``GLIBCXX_3.4.15' not found

以下是我得到这个错误:

  1. 安装最新的Ubuntu 32位
  2. sudo apt-get install build-essential
  3. 编译并加载我的插件(.so)

这里有一些我发现和尝试的链接,但没有一个为我工作:

(我的老问题:在发布这个问题几天之后,我不知怎么修复了这个问题,但是我不记得我是如何做到的)

我的问题

另一个用户有同样的问题

而另一个

我看到一些人通过将libstdc ++(我认为)移动到某个目录,然后指向或链接idk到那个目录来解决这个问题,但是这让我感到困惑。

任何人都知道解决?

(编辑:) – 运行: strings /usr/lib/libstdc++.so.6 | grep GLIBC 在terminalstrings /usr/lib/libstdc++.so.6 | grep GLIBC给我: strings '/usr/lib/libstdc++.so.6': No such file 。 这可能是问题吗? 如果是这样,我该如何安装这个库?

(Edit2 :)任何人都知道的解决scheme?

(Edit3)仍然需要一个解决scheme。 有没有办法看到在哪个发行版上编译共享库? 我知道我前一阵子曾经编译过这个库,但是不记得了!

(Edit4) ldd my_lib_.so给我:

  linux-gate.so.1 => (0xb77d7000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb76c1000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb76a4000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74fa000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb74ce000) /lib/ld-linux.so.2 (0xb77d8000) 

ldd program_im_loading_so_into给我:

  linux-gate.so.1 => (0xb77d8000) libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb77c0000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb77a5000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb76bb000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb768f000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7672000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74c9000) /lib/ld-linux.so.2 (0xb77d9000) 

运行strings /usr/lib/i386-linux-gnu/libstdc++.so.6 | grep GLIBCXX strings /usr/lib/i386-linux-gnu/libstdc++.so.6 | grep GLIBCXX给了我:

 GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 GLIBCXX_DEBUG_MESSAGE_LENGTH 

最后这里是我的gcc版本:

 `gcc version 4.6.4 (Ubuntu/Linaro 4.6.4-1ubuntu1~12.04)` 

使用-static-libstdc++ gcc选项静态链接到libstdc ++。

我通过安装解决了这个问题: sudo apt-get install libstdc++6

就我而言,在安装MongoDB 3.0.1之后,我遇到了这个问题

mongo:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:版本'GLIBCXX_3.4.18'找不到(需要mongo)

只需从非默认存储库安装最新版本:

 $ sudo add-apt-repository ppa:ubuntu-toolchain-r/test $ sudo apt-get update $ sudo apt-get install libstdc++6-4.7-dev 

在上面,你提到编译你的步骤的一部分来复制,但下面你做了一个编辑说,

“有没有办法看到共享库在哪个发行版上编译?”

无论你是否在同一个发行版上编译,甚至不同版本的发行版都是一个重要的细节,特别是对于c ++应用程序。

据我所知,连接到c ++库,包括libstdc ++,可能会有混合的结果。 这里有一个关于用不同版本的c ++重新编译的相关问题。

我们需要用c ++ 11重新编译库吗?

基本上,如果你在不同的发行版(可能不同的gcc版本)上编译c ++,这可能会导致你的麻烦。

我想你有两个select:

  1. 你最好的select – 重新编译你的.so,如果你没有编译你的系统。 如果运行时的系统环境有问题,甚至可能在编译时出现。
  2. 将您的其他编译器的c ++库与您的应用程序捆绑在一起。 如果它是相同的发行版,这可能是唯一可行的。但是如果你自己编译的话,这是一个很有用的技巧。 如果走这条路线,您还必须设置LD_LIBRARY_PATH并将其导出到包含捆绑的stdc ++库的path。

这个问题可以通过安装最新的libstdc ++来解决。

 $ sudo add-apt-repository ppa:ubuntu-toolchain-r/test $ sudo apt-get update $ sudo apt-get install libstdc++6-7-dbg 

如果有人遇到和我一样的问题 – 确保你没有从Ubuntu 14.04的repo安装到12.04的机器上 – 它会给出同样的错误。 从适当的存储库重新安装修复了这个问题。