问题场景:
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
恢复前为4.4.7。