version `GLIBC_2.17' not found

@ 今天把一个linux程序布到线上服务器上时,运行不起来,下面是解决思路。

@ 运行程序,报以下错误

1
2
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

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

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

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

给libchefbase.so库加上-lrt,问题解决。

@ 补充一些相关命令

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

posted on   q191201771  阅读(5572)  评论(1编辑  收藏  举报

编辑推荐:
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
· 如何做好软件架构师
阅读排行:
· 欧阳的2024年终总结,迷茫,重生与失业
· 聊一聊 C#异步 任务延续的三种底层玩法
· 上位机能不能替代PLC呢?
· 2024年终总结:5000 Star,10w 下载量,这是我交出的开源答卷
· .NET Core:架构、特性和优势详解

统计

点击右上角即可分享
微信分享提示