专栏首页云技术+云运维CentOS6.5升级自带glibc-2.12到glibc-2.15的过程解析(无需重启)

CentOS6.5升级自带glibc-2.12到glibc-2.15的过程解析(无需重启)

在开发时项目所依赖的包需要更高版本的glibc库支持, 而Centos6.5 中glibc默认版本为2.12, 这样调试时可能会遇到报错。但如果不小心把动态库中的libc.so.6给删了,瞬间所有的非系统命令都将无法使用,使用就报错。因为libc.so.6 是c运行时库glibc的软链接,而系统几乎所有程序都依赖c运行时库。程序启动和运行时,是根据libc.so.6 软链接找到glibc库。删除libc.so.6将导致系统的几乎所有程序不能工作。   每个glibc.so文件有它支持的libc版本,可以通过 strings /lib64/libc.so.6 |grep GLIBC 查看,一定要选择这条命令列出的版本。 [root@test1 ~]# strings /lib64/libc.so.6 |grep GLIBC GLIBC_2.2.5 GLIBC_2.2.6 GLIBC_2.3 GLIBC_2.3.2 GLIBC_2.3.3 GLIBC_2.3.4 GLIBC_2.4 GLIBC_2.5 GLIBC_2.6 GLIBC_2.7 GLIBC_2.8 GLIBC_2.9 GLIBC_2.10 GLIBC_2.11 GLIBC_2.12 GLIBC_2.13 GLIBC_2.14 GLIBC_2.15 GLIBC_PRIVATE

如果程序编译的时候链接的libc库版本不在程序运行环境下的glibc库支持的libc版本之内,也会报错。于是,系统的所有命令 ls,cp,cd 等等都无法使用了。我们可以到这里找你要的版本,http://ftp.gnu.org/gnu/glibc/,然后解压后安装

一、首先查看下本机的glibc版本 [root@test1 ~]# /lib64/libc.so.6 GNU C Library stable release version 2.12, by Roland McGrath et al. Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiled by GNU CC version 4.4.7 20120313 (Red Hat 4.4.7-4). Compiled on a Linux 2.6.32 system on 2013-11-05. Available extensions: The C stubs add-on version 2.1.2. crypt add-on version 2.1 by Michael Glad and others GNU Libidn by Simon Josefsson Native POSIX Threads Library by Ulrich Drepper et al BIND-8.2.3-T5B RT using linux kernel aio libc ABIs: UNIQUE IFUNC For bug reporting instructions, please see: <http://www.gnu.org/software/libc/bugs.html>;.

二、编译安装 [root@test1 ~]# mkdir -pv /path/to/glibc-2.15/build [root@test1 ~]# cd /path/to/glibc-2.15/ [root@test1 ~]# wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz [root@test1 ~]# tar xzvf glibc-2.15.tar.gz [root@test1 ~]# cd /path/to/glibc-2.15/build

[root@test1 build]# ../glibc-2.15/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin 这一步是关键,一定不要在glibc解压的那个目录执行/configure checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for gcc... no checking for cc... no checking for cl.exe... no configure: error: in /path/to/glibc-2.15/build':<br/>configure: error: no acceptable C compiler found in $PATH<br/>Seeconfig.log' for more details 这个报错是提示你没有gcc和cc编译包

要安装gcc cc 编译包,使用yum安装即可。然后再make、 make install

三、检查验证

[root@test1 build]# ll /lib64/libc* -rwxr-xr-x 1 root root 1926800 Nov 6 2013 /lib64/libc-2.12.so -rwxr-xr-x 1 root root 9801125 Apr 22 11:19 /lib64/libc-2.15.so lrwxrwxrwx. 1 root root 18 Oct 10 2018 /lib64/libcap-ng.so.0 -> libcap-ng.so.0.0.0 -rwxr-xr-x. 1 root root 18672 Nov 5 2010 /lib64/libcap-ng.so.0.0.0 lrwxrwxrwx. 1 root root 14 Oct 10 2018 /lib64/libcap.so.2 -> libcap.so.2.16 -rwxr-xr-x 1 root root 19016 Aug 23 2011 /lib64/libcap.so.2.16 -rwxr-xr-x. 1 root root 197064 Nov 6 2013 /lib64/libcidn-2.12.so -rwxr-xr-x 1 root root 267972 Apr 22 11:19 /lib64/libcidn-2.15.so lrwxrwxrwx 1 root root 15 Apr 22 11:19 /lib64/libcidn.so.1 -> libcidn-2.15.so lrwxrwxrwx. 1 root root 17 Oct 10 2018 /lib64/libcom_err.so.2 -> libcom_err.so.2.1 -rwxr-xr-x 1 root root 17256 Aug 13 2013 /lib64/libcom_err.so.2.1 -rwxr-xr-x 1 root root 43392 Nov 6 2013 /lib64/libcrypt-2.12.so -rwxr-xr-x 1 root root 142947 Apr 22 11:19 /lib64/libcrypt-2.15.so lrwxrwxrwx. 1 root root 22 Oct 10 2018 /lib64/libcryptsetup.so.1 -> libcryptsetup.so.1.1.0 -rwxr-xr-x 1 root root 97072 Feb 29 2012 /lib64/libcryptsetup.so.1.1.0 lrwxrwxrwx 1 root root 16 Apr 22 11:19 /lib64/libcrypt.so.1 -> libcrypt-2.15.so lrwxrwxrwx 1 root root 12 Apr 22 11:19 /lib64/libc.so.6 -> libc-2.15.so

我们可以看到2.12版本的旧库文件依然存在,而且还多了2.15版本的库文件,而且软链接文件全部指向了2.15版本。

再次确认,发现版本已更新为2.15版了,无需重启。 [root@test1 build]# /lib64/libc.so.6 GNU C Library stable release version 2.15, by Roland McGrath et al. Copyright (C) 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiled by GNU CC version 4.4.7 20120313 (Red Hat 4.4.7-23). Compiled on a Linux 2.6.32 system on 2019-04-22. Available extensions: crypt add-on version 2.1 by Michael Glad and others GNU Libidn by Simon Josefsson Native POSIX Threads Library by Ulrich Drepper et al BIND-8.2.3-T5B libc ABIs: UNIQUE IFUNC For bug reporting instructions, please see: <http://www.gnu.org/software/libc/bugs.html>;.

注: 1、不要在 glibc源码包里直接执行 ./configure 指令,否则你就等着被虐吧,假如安装包位置是: /path/to/glibc-2.15,正确的姿势是再建一级目录,在那个目录下执行 ./configure 指令 2、不要将 glibc 安装到默认的目录【/usr/local】或者 【任何自定义的目录】,请务必安装到【/usr】目录,否则你就等着被虐吧。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • libssl.so.10缺失库文件的解决办法

    在RHEL6.5中对openssl进行了升级,如果老版本是OpenSSL 1.0.1e-fips,那直接安装最新的openssl-1.0.1g-1.x86_64...

    孙杰
  • linux rc.sysinit修复

      #删除/boot,然后重启 [root@serv01 boot]# rm -rf * [root@serv01 boot]# ls [root@serv01...

    孙杰
  • rhel iptables只允许限定IP访问某端口、某特定网站

    # iptables -I INPUT -p tcp --dport 80 -j DROP  # iptables -I INPUT -s 192.168.1....

    孙杰
  • ssh密钥创建分发(端口号非22)&脚本实现自动创建分发密钥

    1.1 服务端端口号变化了,如何基于秘钥连接 1.1.1 环境准备 实验环境: [root@test ~]# cat /etc/redhat-release C...

    惨绿少年
  • tomcat基础小结

    bin:可执行文件,包含启动脚本 conf:配置文件 lib:tomcat的依赖库 logs:日志 temp:临时文件 webapp:默认的应用部署目...

    汐楓
  • 11.7/11.8/11.9 Apache安装

    安装Apache Apache是一个基金会的名字,httpd才是我们要安装的软件包,早期它的名字就叫apache Apache官网www.apache.org ...

    运维小白
  • leetcode: 94. Binary Tree Inorder Traversal

    Stack ( pop()过 == 访问过 ): Note:stack是反着入栈的。

    Petrichor_
  • RxJava之初体验

    RxJava – Reactive Extensions for the JVM – a library for composing asy...

    open
  • 5G小科普(漫画版,So easy!)

    SDNLAB
  • CentOS7下ELK日志分析平台的简单搭建步骤

    yum install -y java-11-openjdk java-11-openjdk-devel

    yuanfan2012

扫码关注云+社区

领取腾讯云代金券