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

最終編譯軟件正常,問題解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章