您的位置:首页 > 运维架构 > Linux

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found 解决办法

2015-12-22 16:51 696 查看
摘自:http://blog.csdn.net/hbuxiaofei/article/details/46012833

今天编译一个工程,在目标机上运行app,出现了这个错误。






下面我们由这条报错信息入手,寻找问题的答案:

1.首先保证程序没有被strip,也就是说可执行程序含有符号表信息。

2.出现这个问题的原因是glibc的版本太低,查看系统glibc支持的版本

root@ubuntu:/dvr# strings  /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_

GLIBC_2.2.5

GLIBC_2.2.6

GLIBC_2.3

GLIBC_2.3.2

GLIBC_2.3.3

GLIBC_2.3.4

GLIBC_2.4

GLIBC_2.5

GLIBC_2.6

GLIBC_2.7

GLIBC_2.8

GLIBC_2.9

GLIBC_2.10

GLIBC_2.11

GLIBC_2.12

GLIBC_2.13

GLIBC_2.14

GLIBC_2.15

GLIBC_PRIVATE

发现系统支持的最高版本为GLIBC_2.15,显然不支持GLIBC_2.17。

3.使用反汇编命令objdump -p 查看库文件版本等信息,我们可以看到

root@ubuntu:/dvr# objdump -p hxht


Version References:

  required from libpthread.so.0:

    0x09691a75 0x00 05 GLIBC_2.2.5

  required from libc.so.6:

    0x06969194 0x00 10 GLIBC_2.14

    0x06969195 0x00 09 GLIBC_2.15

    0x0d696914 0x00 08 GLIBC_2.4

    0x06969197 0x00 07 GLIBC_2.17

    0x0d696917 0x00 06 GLIBC_2.7

    0x09691a75 0x00 04 GLIBC_2.2.5

    0x09691974 0x00 03 GLIBC_2.3.4

    0x0d696913 0x00 02 GLIBC_2.3

4.nm 命令显示关于指定 File 中符号的信息

root@ubuntu:/dvr# nm hxht | grep GLIBC_2.17

                 U clock_gettime@@GLIBC_2.17

我们发现clock_gettime()这个函数使用了GLIBC_2.17

由此我们断定问题是由于clock_gettime()这个函数使用了GLIBC_2.17库所致
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: