今日遇到一需求,需要升级centos6.6服务器的glibc默认版本为2.12,centos7系统的默认glibc版本已经升级2.17,询问了同事系统升级的可能,因涉及的组件以及环境比较复杂,因此不考虑升级系统,只能考虑升级glibc版本。
之后经过查询,若要升级glibc,需先升级gcc,尝试升级至gcc4.8.2时,出现问题texinfo相关错误:
../gcc-4.8.2/gcc/doc/gcc.texi:209: no matching `@end tex'
../gcc-4.8.2/gcc/doc/gcc.texi:209: no matching `@end multitable'
../gcc-4.8.2/gcc/doc/gcc.texi:209: no matching `@end titlepage'
经过查询发现,此错误存在于gcc4.8及以前的版本中,升级至4.9版本后无问题
因此选择升级至gcc-4.9.4
升级过程如下:
1.下载源码:
wget http://ftp.gnu.org/gnu/gcc/gcc-4.9.4/gcc-4.9.4.tar.bz2
tar -jxvf gcc-4.9.4.tar.bz2
注:在server端下载时,发现速度较慢,但在PC端使用浏览器下载的时候速度很快,可能是认证方式不同走的不同线路,若出现同样情况可以现在PC端下载后再上传到服务器端
2.编译安装:
cd gcc-4.9.4
mkdir build-gcc-4.9.4
./contrib/download_prerequisites ##下载编译所必需的插件和文件
####下载完成后进行编译安装####
cd build-gcc-4.9.4/
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib ###配置编译参数
make -j4 ##需要等待一段时间,这里如果server性能足够,可以-j9
echo $? #为0则继续,出现错误, 则需要排错重新make
make install
####安装完成后,check####
[root@localhost src]# gcc --version
gcc (GCC) 4.9.4
Copyright © 2015 Free Software Foundation, Inc.
上面gcc 安装完成后,在进行glibc的升级
1.下载源码安装并编译:
wget http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
tar zxvf glibc-2.17.tar.gz
cd glibc-2.17
mkdir build
cd build/
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make -j4
make install
2.安装完成后,进行验证:
[root@localhost src]# ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
注:
这是glibc升级成功了,若执行编译任务的时候报某些.so文件缺失,建议自己找下,手动做软链,源码编译其实把相应的文件都生成了的,
例如
ln -sf /usr/local/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6
网友评论