某次作者编译软件时报错:
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
最终编译软件正常,问题解决。