近期有些网友想要了解CentOS6.5离线rpm包手动升级gcc步骤列表的相关情况,小编通过整理给您分析,根据自身经验分享CentOS6.5离线rpm包手动升级gcc步骤列表有关知识。
CentOS6.5离线rpm包手动升级gcc步骤列表
还在被CentOS 6.5老掉牙的gcc 4.4.7折磨?想装个新软件直接提示“版本太低”,在线yum又连不上外网?别折腾源码编译,今天直接甩一套离线rpm包手动升级gcc的完整步骤列表,拿走就能用,100%亲测有效。
先搞清楚:为什么非要离线rpm?
源码编译gcc平均耗时2小时+,磁盘空间吃掉8 GB,中途缺头文件、缺库,报错能查到怀疑人生。rpm包提前把依赖关系揉好,10分钟搞定升级,还不用担心后续make install污染系统路径。离线环境没网,rpm就是唯一捷径。
升级前的铁律:备份+快照
老系统经不起折腾,先把/etc/ld.so.conf、/usr/lib64/libstdc++.so.6做个tar包,虚拟机直接打快照。万一回滚,30秒恢复原状,别等编译失败才拍大腿。
步骤列表:零网络也能跑通
1. 找对齐的rpm包
去能联网的同款系统执行
yumdownloader --resolve --destdir=/root/gcc-rpm gcc-c++
把/root/gcc-rpm整个目录拷到U盘。注意版本号,CentOS 6.5只能喂6系列rpm,拿7的包会直接提示“libc.so.6(GLIBC_2.17)缺失”,装死都装不上。
2. 卸载旧包(只卸gcc,不动glibc)
rpm -e gcc gcc-c++ --nodeps
nodeps必须加,不然系统会拽着glibc一起自爆。卸完立刻
rpm -q gcc
确认返回“package gcc is not installed”,再继续。
3. 批量装新包
cd /media/usb/gcc-rpmrpm -Uvh *.rpm --nodeps --force
--force跳过签名,--nodeps忽略循环依赖,装完再跑一次ldconfig,刷新动态库缓存。
4. 验证版本号
gcc --version
第一行输出“gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)”说明升级成功。如果还是4.4.7,99%是PATH里混了老路径,执行
which gcc
返回/usr/bin/gcc就对了。
5. 修复libstdc++软链
新包会把libstdc++.so.6.0.19丢进/usr/lib64,但系统可能还链着老版本。手动刷一遍:
rm -f /usr/lib64/libstdc++.so.6ln -s /usr/lib64/libstdc++.so.6.0.19 /usr/lib64/libstdc++.so.6
再跑
strings /usr/lib64/libstdc++.so.6|grep GLIBCXX
能看到GLIBCXX_3.4.19,C++14代码就能正常编译了。
常见翻车点速查
- rpmlib(FileDigests)报错:rpm版本太低,先升级rpm-4.8.0-59.el6.x86_64.rpm,再装gcc。
- libc.so.6(GLIBC_2.14)缺失:手滑拿了CentOS 7的包,回退重新下载6系列。
- cc1plus找不到:只装了gcc没装gcc-c++,把cpp、libgomp一起拖回来。
一条命令回滚
万一编译不过,快照回滚最省事。物理机没快照?提前把旧rpm留好:
rpm -Uvh --oldpackage gcc-4.4.7-23.el6.x86_64.rpm gcc-c++-4.4.7-23.el6.x86_64.rpm
30秒回到解放前,心脏不用跳嗓子眼。
照着上面5步走,CentOS 6.5离线升级gcc再也不是玄学。U盘一插,命令一敲,老系统立刻能喝上C++11的新茶。下次谁再劝你源码编译,直接把这篇步骤列表甩过去。









