升级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