/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found 解决方法
2014-06-08 22:25
573 查看
问题重现:当我们运行某一个用C系列语言编译而成的程序的时候,可能会接收到这个错误——这个错误的意思是,没有找到GLIBC版本是3.4.14的相应C++标准库。
问题起源:首先,我们需要清楚,一个程序从被加载之后,需要进行动态链接,而动态链接,需要对应版本的glibc库。但是我们的可执行文件需要哪个版本的glibc库呢?
这个版本问题,已经存在于我们的可执行文件ELF格式中。我们可以用命令这样查看。
[22:10huangyk@leetcode]$>strings numDistinct | grep GLIB
GLIBC_2.2.5
GLIBCXX_3.4.5
GLIBCXX_3.4.14
GLIBCXX_3.4
好了,我们看到了ELF文件加载需要的GLIB库版本。这些版本信息是什么时候被加进去的呢?
答案:是在使用gcc编译程序的时候被加进去的。也就是说,如果两个平台的GLIBC库版本不同,同时GCC版本不同,那么它们的二进制文件是不能通用的。
问题:到什么地方去找安装在本地的GLIBC库呢?又如何寻找对应版本呢?
答案:默认的动态链接库,存放的路径是/usr/lib64/libstdc++.so.6。但是,如果我们自己编译了GCC,对应的libc和libc++的库文件位置就会发生变化。假如我们的安装路径是/usr/local/gcc4.8.3, 那么对应的库文件位置是/usr/local/gcc4.8.3/lib:/usr/local/gcc4.8.3/lib64.
问题:为什么我已经安装了对应的GLIBC库,但是仍然出现上述错误呢?
答案:虽然我们已经安装了对应的库,但是连接器不能顺利找到新库所在的位置。还会接着到原来的目录/usr/lib64/libstdc++.so.6寻找对应的文件。所以,我们需要借助环境变量LD_LIBRARY_PATH来指明动态链接库对应的位置。
问题起源:首先,我们需要清楚,一个程序从被加载之后,需要进行动态链接,而动态链接,需要对应版本的glibc库。但是我们的可执行文件需要哪个版本的glibc库呢?
这个版本问题,已经存在于我们的可执行文件ELF格式中。我们可以用命令这样查看。
[22:10huangyk@leetcode]$>strings numDistinct | grep GLIB
GLIBC_2.2.5
GLIBCXX_3.4.5
GLIBCXX_3.4.14
GLIBCXX_3.4
好了,我们看到了ELF文件加载需要的GLIB库版本。这些版本信息是什么时候被加进去的呢?
答案:是在使用gcc编译程序的时候被加进去的。也就是说,如果两个平台的GLIBC库版本不同,同时GCC版本不同,那么它们的二进制文件是不能通用的。
问题:到什么地方去找安装在本地的GLIBC库呢?又如何寻找对应版本呢?
答案:默认的动态链接库,存放的路径是/usr/lib64/libstdc++.so.6。但是,如果我们自己编译了GCC,对应的libc和libc++的库文件位置就会发生变化。假如我们的安装路径是/usr/local/gcc4.8.3, 那么对应的库文件位置是/usr/local/gcc4.8.3/lib:/usr/local/gcc4.8.3/lib64.
问题:为什么我已经安装了对应的GLIBC库,但是仍然出现上述错误呢?
答案:虽然我们已经安装了对应的库,但是连接器不能顺利找到新库所在的位置。还会接着到原来的目录/usr/lib64/libstdc++.so.6寻找对应的文件。所以,我们需要借助环境变量LD_LIBRARY_PATH来指明动态链接库对应的位置。
相关文章推荐
- 解决VTune错误.../lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ...)
- OpenGL——解决/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found问题
- Qtcreator 在红帽 无法启动,很可能是gcc版本问题:解决/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found问题
- 解决/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found问题
- 解决/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found问题
- 解决VTune错误.../lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ...)
- libstdc++.so.6: version `GLIBCXX_3.4.15' not found问题和相应的解决方法
- /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by **) 解决方法
- /usr/local/MATLAB/R2013a/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found 解决方法
- version `GLIBC_2.14' not found 解决方法.
- 解决 /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found
- Praat在CentOS 6.5中安装出现./praat /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.18' not found错误的解决办法
- Linux-CentOS libstdc++.so.6:version`GLIBCXX_3.4.9'notfound 解决方法
- TLD算法:**/libstdc++.so.6: version `GLIBCXX_3.4.11' not found错误及解决
- 解决 /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found
- lupdate: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by lupdate)错误解决方式
- version `GLIBC_2.14' not found 解决方法.
- 解决了/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found的问题
- 解决 /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found
- /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found