本次的操作系统是asian linux: linux 2.6.18-238.2.AXS3 #1 x86_64 GNU/Linux
之前参考了网上很多的升级方法,到最后安装手工替换/lib64/libc.so.6 指向的旧版本后,都是全部命令出现 “段错误”,手工替换so库文件的方式不可取。
下载安装包,网址:
http://mirrors.nju.edu.cn/gnu/libc/ (速度快)
http://ftp.gnu.org/gnu/glibc(速度慢)
此处下载三个tar.gz包到指定目录software
cd software
tar xf glibc-2.6.tar.gz (解压)
tar -xzvf glibc-ports-2.6.tar.gz
tar -xzvf glibc-libidn-2.6.tar.gz
mv glibc-ports-2.6 glibc-2.6/ports
mv glibc-libidn-2.6 glibc-2.6/libidn
cd glibc-2.6
mkdir build (编译要求用单独的目录)
cd build
../configure --prefix=/usr (试了好几次,一定用这个路径后面才能安装成功,其它编译参数可以根据需要自行添加)
make (此处时间较长)
make install (执行此步前做好备份 /usr , lib/, lib64/ , bin/ , sbin/)
安装成功会显示:
Your new glibc installation seems to be OK
以上步骤在2.6,2.7, 2.8, 2.9版本升级均能成功。再高的版本编译报错:内核版本太低不支持
升级后的问题:
升级2.6版本后系统正常。
升级2.7及以上版本后,普通命令运行正常,但执行ssh、java等命令报“段错误”,日志可以在/var/log/message上看到。 原因暂不清楚,所以建议不要轻易升级glibc。
查看“段错误”报错原因:先执行 ulimint -c unlimited,再运行程序,会在运行目录产生core文件,采用“gdb core文件名 应用程序名”命令进行查看,不了解gdb用法的自行百度。
如果想在正式安装前先验证一下,以下方式可以参考,但有可能验证失败,正式安装却能成功。
#正式安装前,先试运行一下会不会报错。安装目录指定临时目录,能预先查看会安装什么
make install install_root=/data/glibc_build/system_fake_root
#验证
export LD_LIBRARY_PATH=/data/glibc_build/system_fake_root/lib64
再执行要验证的程序
手工修改/lib64/libc.so.6指向新版本后,全部命令出现 “段错误”的回退办法:
网上有不少解决办法:
一是libc.so.6软链接重新指向到旧版本,ln命令此时用不了,要用sln,注意要用全路径:
/sbin/sln /lib64/libc-2.5.so /lib64/libc.so.6
另外一种方法(没有验证):
export LD_PRELOAD="/lib64/libc-2.5.so"
ln -s /lib64/libc-2.5.so /lib64/libc.so.6
以下文章有一些的参考意义
http://www.360doc.com/content/16/0607/09/6828497_565707419.shtml (可参考)