首页开发环境 › Linux下GLIBCXX和GLIBC版本低造成的编译错误的解决方案

Linux下GLIBCXX和GLIBC版本低造成的编译错误的解决方案

最近在给编译环境centOS 6.5安装新版clang (clang 3.4/3.5)的时候,虽然已经装了gcc 4.9.1, 但编译的时候(参考clang官方主页http://clang.llvm.org/get_started.html的步骤,在独立build目录下运行clang自带的configure脚本),仍然出了“c compiler cannot create executables”的提示,去查看log信息,发现里面有下面几个错误:

这里是两个系统版本库版本过低的问题,一个是关于C++的库libstdc++, 一个是关于C系统基础运行库GLIBC,前者比较好办,后者十分基础,一般一个版本的centos会指定一个GLIBC,可以去升级,但这样CentOS本身版本的稳定性的可能就会被破坏。

 

1. 我们着手解决GLIBCXX的问题,C++库,首先查看错误信息提示中的lib文件的信息。

这里是打印 libstdc++.so.6的输出信息中限定(grep) GLIBC库的信息

也就是系统以前有一个6.0.13版本,确实比较旧了,那么我们有新版本么?我们安装了gcc 4.9.1,按理说应该已经装了新版的libstdC++.,如果没有,可以去网上下一个。

先在本机找:

我们发现,gcc安装时把/libstdc++.so.6.0.20 安装到了/usr/local/lib64下,但并没有改变libstdc++.so.6的链接指向。

那么我们手动来更新软连接(也可以字节指向/usr/local下的文件,不用拷贝, 看鸽子的文件管理习惯)

然后结果:

库更新完毕。我们已经支持到了GLIBCXX_3.4.20

此时再进行编译,GLIBCXX的问题是没有了。

2. 关于C基本运行库GLIBC,因为要慎重,所以我写在下一篇博客:
Linux/CentOS 升级C基本运行库CLIBC的注意事项(当想解决GLIBC_2.x找不到的编译问题)

发表评论