摘自: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库所致



GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐