升级GLIBCXX

有些so库提示 GLIBCXX_3.4.21 not found。

执行:

sudo find / -name "libstdc++.so*"

在这里插入图片描述
我们将最新的动态库替换上去,

sudo cp /var/lib/docker/overlay2/35378f47e4e0b5d5d03d1369c260c4c13db292626b211437100f682d1c56c59f/merged/usr/lib/x86_64-linux-gnu/libstdc++.so.6   /usr/lib64/libstdc++.so.6

验证

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

会显示所有支持的GLIBCXX版本

升级glibc-2.18

简介

glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。
同时,错误地升级glibc将会毁掉一个系统(以至于无法登录)。初学Linux时,通过网上其他教程装毁的Linux不下十台,这里找到一个靠谱的,通过升级glibc到2.18版得出的升级方法。

过程

1、下载glibc,解压
原文中的glibc-ports是用来支持arm架构芯片的包,可以将包内文件移动到glibc-2.18/ports内编译安装,这里不再赘述

wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar -zxvf glibc-2.18.tar.gz

用迅雷下载会比较快

2、准备一个编译文件夹

cd glibc-2.18
mkdir build
cd build

3、配置configure

../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

如果提示make版本太低,而你的make版本是4.x,则不是太低,而是太高。在configure文件中,找到3.79* | 3.[89]*,改为3.79* | 3.[89]* | 4.*即可。

4、编译安装

make -j4
make install

5、检查软连接
编译成功后,build文件下会生成一个新的libc.so.6,这是一个软连接,而真实的lib文件是此目录下的libc.so。ll是ls -l的别名

ll libc.so.6

查看库文件

ll /lib64/libc*

可以看到2.12的旧库文件还在,多了2.18版本的库文件,而且软链接文件全部指向了2.18版本

查看glibc支持的版本

strings libc.so | grep GLIBC
Logo

更多推荐