@ 今天把一個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_