Published on

升级glibc

Authors

起因

运行android studio的AVD报错,xxx terminated,然后去~/.cache/Google/android-studio-xxx/log/idea.log 看到报 GLIBC_2.30' not found

只能自己编译更新glibc库了。

编译glibc

  1. 下载源码: wget http://ftp.gnu.org/gnu/glibc/glibc-2.30.tar.xz
  2. 解压 tar -Jxf glibc-2.30.tar.xz cd glibc-2.30 mkdir build cd build

安装依赖

sudo apt install gawk bison -y

环境检测,生成Makefile

../configure --prefix=/usr/local --disable-sanity-checks

编译

make -j8

安装到系统中

sudo make install

拷贝编译产物

sudo cp /usr/local/lib/libm-2.30.so /lib/x86_64-linux-gnu/

创建链接

cd /lib/x86_64-linux-gnu/ sudo ln -sf libm-2.30.so libm.so.6

查看安装结果

strings /lib/x86_64-linux-gnu/libm.so.6 | grep GLIBC_

注意

  • 刚开始想直接编译高版本的,发现编译失败,后面又编译了个比较接近的2.31,发现没有2.29的GLIBC_,直接编译需要的版本最好。

  • 不知问什么有些私有的符号没有,估计是编译选项的问题,我想还原。直接apt install libc-amd64,出错了,整个系统libc崩了,ls都用不了。 通过 export LD_PRELOAD 指定libc.so都不行,只能重置了。

  • 操作libc风险很大,容易搞挂系统,不是万不得已,千万别试。下载个新的debian镜像,把程序丢里面跑最好。