gcc版本过低升级说明

版本过低错误日志信息

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by node)
 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by node)
 /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by node)
 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by node)

查看当前 GCC 的版本

[root soft]# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

下载自己需要的GCC版本

GCC 各版本 下载地址

gcc-5.2.0 对应 GLIBCXX_3.4.21 与 libstdc++.so.6.0.21

gcc-6.5.0 对应 GLIBCXX_3.4.22 与 libstdc++.so.6.0.22

具体下载的 GCC 版本根据自己的需要进行选择,也可下载之前查找当前服务器是否有新版本安装  

find / -name libstdc++.so.6.0.21

  1. 如果libstdc++.so.6.0.21库文件已存在,则按照下面的步骤创建软链接即可
  2. 如果libstdc++.so.6.0.21库文件不存在,则需要按照下面的步骤编译新版本的GCC,然后再创建软链接

编译新下载的 GCC

下载文件

$ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-6.5.0/gcc-6.5.0.tar.gz

解压文件

$ tar -xvf gcc-6.5.0.tar.gz

进入解压目录

$ cd gcc-6.5.0

下载编译gcc所需的依赖文件和库

$ ./contrib/download_prerequisites

建立输出目录,用于存放编译时所有产生的中间文件

$ mkdir gcc-temp

进入输出目录

$ cd gcc-temp

执行configure配置

$ ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

编译gcc,指定编译使用的线程数为10,编译耗时较长,可能需要几个小时

$ make -j10

这里为了避免影响系统的稳定性,暂时不执行"make install"和替换系统默认版本的gcc

建立软链接

进入输出目录

$ cd gcc-temp

查找编译生成libstdc++.so库文件,下面查找到的libstdc++.so、libstdc++.so.6都只是软链接文件,libstdc++.so.6.0.21才是真正编译生成的库文件

$ find . -name "libstdc++.so*"
./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22
./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22
./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
./x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
./x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22
./x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so

拷贝libstdc++.so.6.0.21库文件到lib64目录

$ cp ./x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22 /usr/lib64

进入lib64目录

$ cd /usr/lib64

删除旧的链接文件

$ rm -f libstdc++.so.6

创建新的链接文件

$ ln -s libstdc++.so.6.0.22 libstdc++.so.6

查看最终的libstdc++.so库文件列表

$ ls -al /usr/lib64/libstdc++.so.6*
lrwxrwxrwx. 1 root root 19 3月 12 10:08 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.21
-rwxr-xr-x. 1 root root 991616 10月 30 14:39 /usr/lib64/libstdc++.so.6.0.19
-rwxr-xr-x. 1 root root 11485880 3月 12 10:01 /usr/lib64/libstdc++.so.6.0.22

验证新的 libstdc++.so.6.0.21 库文件是否生效

输出结果中,出现 GLIBCXX_3.4.22,则代表新的 libstdc++.so.6.0.22 库文件生效。

strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.14
GLIBC_2.17
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

原文:gcc版本过低升级说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值