Linux 升级C基本运行库CLIBC的注意事项

2019-07-13 03:17发布

该文可解决LIBC_2.x找不到的问题。 glibc是gun发布的libc库,即C运行库。glibc是Linux系统中最底层的api,几乎其它任何运行库都依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。总的来说,不说运行在linux上的一些应用,或者你之前部署过的产品,就是很多linux的基本命令,比如cp、rm、ll之类都得依赖它。 网上有很多惨痛的经历,甚至升级失败后系统退出后无法重新进入。对于Centos这样的系统各种库的版本都很低,如果升级C运行库到一个太新的版本,可能会影响系统的运行,如果遇到该问题可以考虑: 1.在低版本的系统编译自己的产品。 2.用高版本的系统编译而需要部署到较低版本,考虑用mock等技术制作更好的安装包,把依赖打入包内。 3.利用容器技术。   下面是升级升级glibc2.15的步骤 首先看看现有的情况: $ ll /lib64/libc.so.6 lrwxrwxrwx 1 root root 19 Sep 23 08:29 /lib64/libc.so.6 -> /lib64/libc-2.12.so libc.so.6是一个软连接,当前的glibc是2.12版本,我遇到的是GLIBC_2.15找不到的问题,所以要升级。 其次,下载源码编译安装(最好用root操作)。 wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.15.tar.gz tar -xvf glibc-2.15.tar.gz tar -xvf glibc-ports-2.15.tar.gz mv glibc-ports-2.15 glibc-2.15/ports mkdir glibc-build-2.15 cd glibc-build-2.15 ../glibc-2.15/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin make make install intsall提示成功后,去看glibc的共享库:ll /lib64/libc*,可以看到2.12的旧库文件还在,多了2.15版本的库文件。 这里可以检查下 strings /xxxx/glibc-build-2.15/libc.so|grep GLIBC 是要有2.15的 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 然后需要更新系统的库。 这里要注意,更新系统里的链接(/lib64/libc.so.6)很容易出错,我不清楚有没有更好的办法,一般都是删除旧链接,建立新链接,但是删除旧链接后很多命令不能用了,这个时候就需要临时指定一个glibc库(下面有更好的方法)。 cp /****/glibc-build-2.15/libc.so /lib64/libc-2.15.so rm -f /lib64/libc.so.6 LD_PRELOAD=/lib64/libc-2.15.so ln -s /lib64/libc-2.15.so lib64/libc.so.6 我看原文下面有个评论或许是个更好的方法: 先在另外一个路径下建立这个软连接,然后mv到这个地方直接覆盖掉,亲测有效。 ln -s /lib64/libc-2.15.so libc.so.6 mv libc.so.6 /lib64/libc.so.6 至此,更新完毕,检查一下: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   转载 :https://blog.csdn.net/officercat/article/details/39520227