version `GLIBC_2.17' not found


@ 今天把一個linux程序布到線上服務器上時,運行不起來,下面是解決思路。

@ 運行程序,報以下錯誤

root@iZ25uck2l28Z:/tmp/tmp# ./speed_test 
./speed_test: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found (required by ./libchefbase.so)

說明是編譯環境與運行環境的glibc版本不匹配導致的,編譯環境的gcc版本4.9.0,運行環境為4.6.3

@ 先查看是哪個函數用的是GLIBC_2.17

root@iZ25uck2l28Z:/tmp/tmp# nm libchefbase.so | grep GLIBC_2.17
U clock_gettime@@GLIBC_2.17

@ man clock_gettime,可以看到其中有一句話

Link with -lrt (only for glibc versions before 2.17).

給libchefbase.so庫加上-lrt,問題解決。

@ 補充一些相關命令

$objdump -T libchefbase.so | grep GLIBC_2.17
$ldd libchefbase.so
$strings /lib/x86_64-linux-gnu/libgcc_s.so.1 | grep GLIBC_


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM