记录 | 解决报错:version `GLIBC_2.25` not found
  HRODlxSsrDy9 2023年12月23日 50 0


可以看出来应该是我们的 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


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月23日 0

暂无评论

推荐阅读
HRODlxSsrDy9