/usr/lib/libstdc++.so.6:未找到版本`GLIBCXX_3.4.15'

Chr*_*ris 131 c++ gcc libstdc++

如何在Ubuntu中获得GLIBCXX_3.4.15?我无法运行一些我正在编译的程序.

当我做:

strings /usr/lib/libstdc++.so.6 | grep GLIBC
Run Code Online (Sandbox Code Playgroud)

我明白了:

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
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.4
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

Chr*_*ris 79

我正在从源代码编译gcc 4.6,显然

sudo make install 
Run Code Online (Sandbox Code Playgroud)

没有赶上这一个.我挖了一圈,发现了

gcc/trunk/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.15
Run Code Online (Sandbox Code Playgroud)

我将它复制到/ usr/lib并重定向libstdc ++.so.6指向新的,现在一切正常.

  • @roosevelt:这不是操作系统的问题,用户自己安装软件然后没有正确使用链接器是一个问题.这是一个FAQ:http://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_paths (4认同)
  • 我的是gcc 4.7和libstdc ++.so.6.0.17.有同样的问题,修复此解决方案.荣誉. (2认同)

Mar*_*n G 47

过去我只是简单地将libstdc ++与链接我的可执行文件时发送到g ++的参数静态链接起来一直避免这个问题:

-static-libstdc++
Run Code Online (Sandbox Code Playgroud)

如果静态链接库是一个选项,这可能是最快的解决方法.

  • 非常感谢,我尝试了在SO上建议的所有其他解决方案,但没有任何工作,但这个. (2认同)

小智 45

我试图让clang工作(这也需要6.0.15),而在我四处寻找时发现它已安装在/usr/local/lib/libstdc++.so.6.0.15.它安装在那里我安装了石墨(一个实验性的gcc版本).

如果您需要访问该位置的库,那么您需要定义LD_LIBRARY_PATH为:

export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64

这样做后,我能够开始工作.希望对某人有所帮助.


小智 12

尝试使用matlab eng从c代码调用m函数时遇到此问题.这与命令一起发生mex -f .. ..

我的解决方案

strings /usr/lib/i386-<tab>/libstdc++.so.6 | grep GLIBC
Run Code Online (Sandbox Code Playgroud)

我发现它包括3.4.15

所以我的系统有最新的库.

问题来自matlab本身,它调用自己的libstdc ++.so.6来自 {MATLAB}/bin

所以,只需用更新的系统库替换它.