如何在 Centos7 中安装 gcc
系统环境:Centos7.4
今天在安装 Nodejs8.7 的时候,报了一个警告:
WARNING: C++ Compiler too old, need g++ 4.9.4 or clang++ 3.4.2 (CXX=g++)
然后,查了一下自己系统上安装的版本:4.8.5
好吧,不能用 yum 升级了,那就手动安装了吧
一、选择需要升级的版本
(我选择了5.4.0)
二、获取安装包并解压
cd /usr/local/src
wget https://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2
tar -jxvf gcc-5.4.0.tar.bz2
注:bz2是一种压缩文件格式,若无法解压,安装 bzip2 即可:yum -y install bzip2
三、进入解压后的gcc文件夹,下载供编译需求的依赖项
cd gcc-build-5.4.0
./contrib/download_prerequisites
四、建立一个文件夹存放编译文件
mkdir gcc-build-5.4.0
cd gcc-build-5.4.0
五、生成 Makefile 文件
make
注:这个过程非常耗时,我的1核1G内存大约花了一个来小时
六、安装
sudo make install
七、重启服务器,验证版本
gcc -v
等了那么久,总算是成功了,很激动对不对?
但是!
我执行到上边以后,屁颠屁颠的跑去编译 nodejs 了,耍出了一个错误:
/usr/local/src/node-v8.7.0/out/Release/mksnapshot: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/local/src/node-v8.7.0/out/Release/mksnapshot)
编译失败~ 劳资等了30分钟
好吧,出了问题终究是要解决的
问题原因:升级gcc时,生成的动态库没有替换老版本 gcc 动态库导致的
解决方案:将gcc最新版本的动态库替换系统中老版本的动态库。
(1). 查找编译gcc时生成的最新动态库
find / -name "libstdc++.so*"
(2) 将找到的动态库libstdc++.so.6.0.21复制到/usr/lib64
cp /usr/local/src/gcc-5.4.0/gcc-build-5.4.0/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64
(3). 切换工作目录至/usr/lib64,删除原来的软连接, 将默认库的软连接指向最新动态库。
cd /usr/lib64
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.21 libstdc++.so.6
到这里才算是收工了。
参考链接:
【推荐】AI 的力量,开发者的翅膀:欢迎使用 AI 原生开发工具 TRAE
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C#性能优化:为何 x * Math.Sqrt(x) 远胜 Math.Pow(x, 1.5)
· 本可避免的P1事故:Nginx变更导致网关请求均响应400
· 还在手写JSON调教大模型?.NET 9有新玩法
· 复杂业务系统线上问题排查过程
· 通过抓包,深入揭秘MCP协议底层通信
· AI 的力量,开发者的翅膀:欢迎使用字节旗下的 AI 原生开发工具 TRAE
· 「闲聊文」准大三的我,思前想后还是不搞java了
· C#性能优化:为何 x * Math.Sqrt(x) 远胜 Math.Pow(x, 1.5)
· 千万级的大表如何新增字段?
· 《HelloGitHub》第 112 期