version `GLIBC_2.17' not found (required by ./bin/tikv-server)

某次作者编译软件时报错:

version `GLIBC_2.17' not found (required by ./bin/tikv-server)

错误信息大概是说缺少 glibc_2.17这个库。

解决办法:

(1)首先保证程序没有被strip,也就是说可执行程序含有符号表信息。

出现这个问题的原因是glibc的版本太低,查看系统glibc支持的版本

>strings /lib64/libc.so.6 | grep GLIBC
GLIBC_2.2.5
....
GLIBC_2.12
(发现其中确实没有GLIBC_2.17)


(2)使用反汇编命令objdump -p 查看执行软件库文件版本等信息

>objdump -p ./bin/***
(3)nm 命令显示关于指定 File 中符号的信息  
>nm ./bin/*** | grep  GLIBC_2.17
                 U secure_getenv@@GLIBC_2.17             
发现secure_getenv()这个函数使用了GLIBC_2.17

查看此时ldd的版本,发现只为2.12


(4)需要将系统glibc库升级到2.17版本。
   点击以下链接下载2.17版本的安装包 :

     http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz

执行以下步骤进行升级安装

[root@sdb build]# tar -xf glibc-2.17.tar.gz
[root@sdb build]# cd glibc-2.17
[root@sdb build]# mkdir build
[root@sdb build]# cd build
[root@sdb build]# ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
[root@sdb build]# make -j 8
[root@sdb build]# make install
[root@sdb common]# strings /lib64/libc.so.6 | grep GLIBC
可以看到部署成功后的glibc的版本为2.17
[root@sdb1 ~]# ldd --version
ldd (GNU libc) 2.17

最终编译软件正常,问题解决。

猜你喜欢

转载自blog.csdn.net/u014439239/article/details/79852330