CentOS gcc多版本的卸载与修复

前端之家收集整理的这篇文章主要介绍了CentOS gcc多版本的卸载与修复前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

问题场景:

CentOS 7装有4.4.5,4.4.7,4.8.5 三个版本的gcc,当前版本为4.4.7,通过gcc –version命令查看得到。4.4.7版本缺少libgmp.so.3文件,编译fastdfs libfastcommon-1.0.35包时发现该问题,

[root@localhost libfastcommon-1.0.35]# ./make.sh

/usr/libexec/gcc/x86_64-redhat-linux/4.4.7/cc1: error while loading shared libraries: libgmp.so.3: cannot open shared object file: No such file or directory

./make.sh:行15: ./a.out: 没有那个文件或目录

cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -o hash.o hash.c

/usr/libexec/gcc/x86_64-redhat-linux/4.4.7/cc1: error while loading shared libraries: libgmp.so.3: cannot open shared object file: No such file or directory

make: *** [hash.o] 错误 1

另外,在/usr/libexec/gcc/x86_64-redhat-linux/4.4.7中,ldd cc1时也能发现该信息。

解决

决定清除有问题的老版本,保留4.8.5(该版本为系统所带,其他低版本可能为某种需要被他人安装)。

1、 找到已安装的包

rpm –q gcc

2、 删除已经安装的有问题的低版本

rpm -e [包名]

包名为上一步中显示的包,形如:

gcc-4.8.5-4.el7.x86_64

重复数次,将所有低版本清除。

3、 找到要恢复的gcc4.8.5 rpm安装包

[root@localhost 4.4.7]# ls /usr/nariis/Packages/*gcc*

/usr/source/Packages/compat-gcc-44-4.4.7-8.el7.x86_64.rpm

/usr/source/Packages/compat-gcc-44-c++-4.4.7-8.el7.x86_64.rpm

/usr/source/Packages/gcc-4.8.5-4.el7.x86_64.rpm

/usr/source/Packages/gcc-c++-4.8.5-4.el7.x86_64.rpm

/usr/source/Packages/gcc-gfortran-4.8.5-4.el7.x86_64.rpm

/usr/source/Packages/gcc-gnat-4.8.5-4.el7.x86_64.rpm

/usr/source/Packages/gcc-objc-4.8.5-4.el7.x86_64.rpm

/usr/source/Packages/gcc-objc++-4.8.5-4.el7.x86_64.rpm

/usr/source/Packages/libgcc-4.8.5-4.el7.x86_64.rpm

4、 强制恢复安装gcc4.8.5

rpm -ivh –force gcc-4.8.5-4.el7.x86_64.rpm

卸载再装,会因为其他包依赖该库,不能被卸载,故使用--force参数强制安装。

5、 安装后查看gcc版本,发现已恢复为4.8.5

[root@localhost 4.4.7]# /usr/bin/gcc --version

gcc (GCC) 4.8.520150623 (Red Hat 4.8.5-4)

Copyright © 2015 Free Software Foundation,Inc.

本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;

包括没有适销性和某一专用目的下的适用性担保。


恢复前为4.4.7。

猜你在找的CentOS相关文章