记录 | 解决报错:version `GLIBC_2.25` not found

可以看出来应该是我们的 GLIBC 版本过低的原因造成的,下面我们用命令查看 glibc 的版本

strings /usr/lib64/libc.so.6 |grep GLIBC_

或者

strings /lib/x86_64-linux-gnu/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_2.16
GLIBC_2.17
GLIBC_2.18
GLIBC_2.22
GLIBC_2.23
GLIBC_PRIVATE

发现确实是不存在 GLIBC_2.25,接下来我们就开始安装 GLIBC 的新版本

下载地址:Index of /gnu/glibc

选择自己合适的版本进行下载,然后就是解压和安装(比如我下载的是 glibc-2.35.tar.xz),下面的命令按照顺序一个个输入

tar -xvf glibc-2.35.tar.xz
cd glibc-2.35
mkdir build
cd build
../configure  --prefix=/usr/glibc2.25
make -j16
sudo make install

注意 configure 时,一定要指定 --prefix=/usr/glibcxxx,xxx 为对应的版本号,否则 sudo make install 的时候,整个系统会崩溃,并可能报下面错误

Makefile:106: recipe for target ‘install-symbolic-link’ failed
make[1]: *** [install-symbolic-link] Segmentation fault (core dumped)
make[1]: Leaving directory ‘/home/xxx/Downloads/glibc-2.25’
Makefile:12: recipe for target ‘install’ failed
make: *** [install] Error 2

接着继续,若 glibc 编译报错

…/sysdeps/unix/sysv/linux/sys/syscall.h:24:24: fatal error: asm/unistd.h: 没有那个文件或目录
compilation terminated.
…/Makerules:266: recipe for target ‘/home/shihaikuo/Downloads/glibc-2.25/build/tcb-offsets.h’ failed
…/sysdeps/unix/sysv/linux/sys/syscall.h:24:24: fatal error: asm/prctl.h: 没有那个文件或目录

解决方法:
因为 glibc 编译,代码默认去 /usr/include/asm/unistd.h /usr/include/asm/prctl.h 找头文,实际 ubuntu 不存在该文件,进行软链接处理

sudo ln -s /usr/include/asm-generic /usr/include/asm

如果还是没有解决,可以尝试下面方法解决:
configure 的时候可能有问题:

-I../include/ -include../include/unistd.h -include../include/prctl.h

在编译目录 glibc-build 下搜索头文件,而不是在源代码目录 glibc-2.9

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极智视界

你的支持 是我持续创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值