CentOS 6.5 升级gcc到4.8 以及libstdc++
CentOS 6.5 自带gcc太旧不支持c11, 升级到4.8的步骤:
贴一下步骤: 一、简易安装 操作环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2 不能通过yum的方法升级,需要自己手动下载安装包并编译 1.1 获取安装包并解压 wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2 tar -jxvf gcc-4.8.2.tar.bz2 当然,http://ftp.gnu.org/gnu/gcc 里面有所有的gcc版本供下载,最新版本已经有4.9.2啦. 1.2 下载供编译需求的依赖项 参考文献[1]中说:这个神奇的脚本文件会帮我们下载、配置、安装依赖库,可以节约我们大量的时间和精力。 cd gcc-4.8.0 ./contrib/download_prerequisites 1.3 建立一个目录供编译出的文件存放 mkdir gcc-build-4.8.2 cd gcc-build-4.8.2 1.4 生成Makefile文件 ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib 1.5 编译(注意:此步骤非常耗时) make -j4 -j4选项是make对多核处理器的优化,如果不成功请使用 make,相关优化选项可以移步至参考文献[2]。 我在安装此步骤时候出错,错误描述: `compilation terminated. make[5]: * [_gcov_merge_add.o] 错误 1 make[5]: Leaving directory
/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/32/libgcc’
make[4]: * [multi-do] 错误 1 make[4]: Leaving directory
/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc’
make[3]: * [all-multi] 错误 2 make[3]: * 正在等待未完成的任务….
make[3]: Leaving directory
/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc’
make[2]: * [all-stage1-target-libgcc] 错误 2 make[2]: Leaving
directory/home/imdb/gcc-4.8.2/gcc-build-4.8.2’ make[1]: *
[stage1-bubble] 错误 2 make[1]: Leaving directory
/home/imdb/gcc-4.8.2/gcc-build-4.8.2’ make: * [all] 错误 2
大概看看,错误集中在 x86_64unknown-linux-gnu/32/libgcc 和
x86_64-unknown-linux-gnu/libgcc
根据参考文献[3],安装如下两个软件包(仅用于CentOS6.X):
sudo yum -y install glibc-devel.i686 glibc-devel
1.6、安装 sudo make install 二、验证安装 重启,然后查看gcc版本: gcc -v 尝试写一个C++11特性的程序段 tryCpp11.cc,使用了shared_ptr 复制代码 1 //tryCpp11.cc 2 #include <iostream> 3 #include <memory> 4 5 int main() 6 { 7 std::shared_ptr<int>
pInt(new int(5)); 8 std::cout << *pInt << std::endl; 9
return 0; 10 } 复制代码 验证文件:
g++ -std=c++11 -o tryCpp11 tryCpp11.cc ./tryCpp11
三、其他安装: - 在Ubuntu机器上安装:参考文献[3] - 非简易安装:参考文献[4] - 多个gcc版本共存问题:暂无 四、参考文献 [1] 参考的主要安装步骤 http://www.cnblogs.com/ytjjyy/p/4008096.html 注:这篇文章的后半部分解决动态库的方法非常有用处
安装完后, 编译程序运行应该还是有 GLIBCXX not found的错误
解决方案:
http://blog.csdn.net/officercat/article/details/39519265
注意其中
$ cp /usr/local/lib64/libstdc++.so.6.0.20 /usr/lib64
$ rm -rf /usr/lib64/libstdc++.so.6
$ ln -s /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6
$ strings /usr/lib64/libstdc++.so.6 | grep GLIBC
本人的计算机上不是20, 而是18
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能