gcc glibc升级

为防止升级glibc失败,备份好系统库,失败后可以将备份的目录拷回来。恢复系统(rescue or将盘挂到别的机器)

需备分的目录:/lib,/usr/lib,/usr/include,/usr/sbin和/usr/bin,/lib64 ,/usr/lib64/

由于在集群上的ld都是2.20版 本。在glibc configure的时候会报version of ld... 2.20.51.0.2, bad 所以要先升级ld

/global/share/binutils-2.26.tar.gz

[root@test binutils-2.26]# ./configure --prefix=/usr --enable-ld

make

make instlal

确认版本升级成功

[root@test binutils-2.26]# ld -v

GNU ld (GNU Binutils) 2.26.20160125

安装gcc

因为集群上的gcc是4.4版本,所以也要升级。安装glibc时报错 checking if gcc is sufficient to build libc... no checking for nm... nm configure: error: *** These critical programs are missing or too old: compiler *** Check the INSTALL file for required versions.

/global/share/gcc-4.9.0-full.tar.gz (因集群上不能***,将升级gcc所需的mpfr、mpc、gmp、isl、cloog tar包已经打包进去)

sh -x ./contrib/download_prerequisites(脚本中已经注释掉wget过程,解压mpfr、mpc、gmp、isl、cloog,做软链)

cd ..

mkdir objdir

cd objdir

../gcc-4.9.0-full/configure --prefix=/usr --enable-languages=c,c++,fortran,go --disable-multilib(注意这里指定的--prefix=/usr,好多同学都选择默认安装到/usr/bin/local下,造成失败 。另外make时间较长,建议开screen执行)

make

make install

安装完成后,查看gcc版本已经变成4.9

安装glibc

tar -zxf /global/share/glibc-2.23.tar.gz

cd glibc-2.23

mkdir build

../configure --prefix=/usr --disable-profile --enable-kernel=2.6.32 --enable-obsolete-rpc

make

make install

会跳出错误(我碰到是这样的错误,还有可能是其它的错误,具体错误具体分析,但我认为这些问题,基本上就是因为升级后因为软链的版本不对所造成的)

gawk: error while loading shared libraries: /lib64/libm.so.6: invalid ELF header

make[2]: *** [/disk1/software/gcc/glibc-2.23/build/math/stubs] Error 127

make[2]: Leaving directory `/disk1/software/gcc/glibc-2.23/math'

make[1]: *** [math/subdir_install] Error 2

make[1]: Leaving directory `/disk1/software/gcc/glibc-2.23'

make: *** [install] Error 2

发现错误后,google了一圈,没有找到相关的。就自已分析了一下,先cat了一下/lib64/libm.so.6发现了如下的内容:

/* GNU ld script*/OUTPUT_FORMAT(elf64-x86-64)GROUP ( /lib64/libm.so.6  AS_NEEDED ( /usr/lib64/libmvec_nonshared.a /lib64/libmvec.so.1 ) )

这个内容和正常的是不一样的。而且是link到老的libm-2.12.so版本,ls grep了一下libm相关的文件,发现有新的libm-2.23.so文件生成,这个时候更改了一下软链:

unlink libm.so.6

ln -s libm-2.23.so libm.so.6 (在另外的窗口中做的操作,make install的窗口已经不动了)

继续make install

最后出来:Your new glibc installation seems to be ok.

升级成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章