某次作者編譯軟件時報錯:
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
最終編譯軟件正常,問題解決。