/usr/lib/libstdc++.so.6:未find版本`GLIBCXX_3.4.15'
我如何在Ubuntu中获得GLIBCXX_3.4.15? 我无法运行一些我正在编译的程序。
当我这样做时:
strings /usr/lib/libstdc++.so.6 | grep GLIBC
我得到:
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
感谢您的帮助!
我从源代码编译gcc 4.6,显然
sudo make install
没有抓住这个。 我挖来,发现
gcc/trunk/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.15
我将它复制到/ usr / lib中,然后redirect到libstdc ++。so.6指向新的,现在一切正常。
我试图让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
做完这些之后,我才得以开始工作。 希望对某人有帮助。
过去,我一直在回避这个问题,只要在链接我的可执行文件时简单地将libstdc ++静态链接到发送给g ++的参数:
-static-libstdc++
如果静态链接库是一个选项,这可能是最快的解决方法。
当我尝试使用matlab eng从c代码中调用m函数时遇到这个问题。 这与命令mex -f .. ..
发生
我的解决scheme
strings /usr/lib/i386-<tab>/libstdc++.so.6 | grep GLIBC
我发现它包含了3.4.15
所以我的系统有最新的库。
问题来自matlab本身,它从{MATLAB}/bin
调用自己的libstdc ++。so.6
所以,只需更新它与更新的系统库。
对于这个错误,我从其他服务器复制了最新的libstdc ++。so.6.0.17,并删除了软链接并重新创build。
1.将libstdc ++。so.6.0.15或最新版本从其他服务器复制到受影响的系统。
在我的情况下,SUSE linux 11 SP3有最新的。
2. rm libstdc ++。so.6
3. ln -s libstdc ++。so.6.0.17 libstdc ++。so.6(在/ usr / lib64目录下)。
的nJoy
gcc版本4.8.1,错误如下:
/ root / bllvm / build / Release + Asserts / bin / llvm-tblgen:/usr/lib64/libstdc++.so.6:找不到版本'GLIBCXX_3.4.15'(必需/ root / bllvm / build / Release + Asserts /箱/ LLVM-tblgen)
我在我编写gcc 4.8.1的地方find了libstdc ++。so.6.0.18
然后我喜欢这个
cp ~/objdir/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.18 /usr/lib64/ rm /usr/lib64/libstdc++.so.6 ln -s libstdc++.so.6.0.18 libstdc++.so.6
问题解决了。
我刚刚遇到类似的问题,build设LLVM 3.7版本。 首先检查你的系统是否安装了所需的库:
$locate libstdc++.so.6.*
然后将find的位置添加到$ LD_LIBRARY_PATH环境variables中。
我有同样的错误。 这是如何为我工作的:
- 清理当前安装的gcc下的项目
- 重新编译它
完美的工作!
我已经从RPM( libstdc ++的RPM)中提取它们,然后:
export LD_LIBRARY_PATH=.
将系统设置为search当前目录中的库。 然后刚刚执行我的程序。 但在我的情况下,我收到了一个我需要的可执行文件,这不是一个系统范围的变化。
有时你不控制目标机器(例如,你的库需要在locking的企业系统上运行)。 在这种情况下,您将需要使用与其GLIBCXX版本相对应的GCC版本来重新编译您的代码。 在这种情况下,您可以执行以下操作:
- 查看目标机器支持的最新版本的GLIBCXX:
strings /usr/lib/libstdc++.so.6 | grep GLIBC
strings /usr/lib/libstdc++.so.6 | grep GLIBC
…说的版本是3.4.19
。 - 使用https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.htmlfind相应的GCC版本。; 在我们的例子中,这是
[4.8.3, 4.9.0)
。
我有一个类似的问题,我已经通过将libstdc++
静态链接到正在编译的程序中解决了这个问题,如下所示:
$ LIBS=-lstdc++ ./configure ... etc.
而不是通常的
$ ./configure ... etc.
这个解决scheme在运行时加载共享库可能会有问题,但是我没有深入研究这个问题,以至于无法评论。
与gcc版本4.8.1(GCC)和libstdc ++。so.6.0.18一样。 不得不在我的Ubuntu机器上复制/ usr / lib / x86_64-linux-gnu。
我有同样的问题之前,并修复,这些步骤可以find这个修复错误“GLIBCXX_3.4.15”在MATLAB
GLIBCXX_3.4.14错误您需要安装更新版本的GCC。 http://pkgs.org/download/libstdc++.so.6转到:;
http://geeksterminal.com/how-to-install-glib-glibc/1392/
并遵循指示。
我有同样的问题,因为我把用户从我自己改为别人:
苏
出于某种原因,之后正常编译我无法执行它(相同的错误信息)。 直接SSH到其他用户帐户的作品。
我安装了多个版本的gcc编译器,需要使用比默认安装更新的版本。 由于我不是我们的Linux系统的系统pipe理员,所以我不能只更改/ usr / lib或上面提到的许多其他build议。 我遇到这个问题,并最终跟踪到设置我的path到32位库目录而不是64位库(lib64)目录。 由于32位目录中的库不兼容,因此系统默认为过时的旧版本。
在我引用的path中使用-L时,给出了有关“跳过不兼容的libstdc ++的警告”,所以当search“lstdc ++”时。 这是帮助我最终解决问题的暗示。