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

本文通过分析一个具体的案例,详细介绍了如何排查并解决因GLIBC版本过低导致的应用程序运行错误。通过检查glibc版本、使用objdump命令及nm命令定位问题根源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天编译一个工程,在目标机上运行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库所致




根据引用和引用的信息,您遇到的问题是"/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found",这意味着您的系统缺少GLIBC_2.34版本的GNU C库。解决这个问题的方法是将GLIBC_2.34修改为您系统中存在的更低的GLIBC版本。根据引用中的信息,您可以通过修改ELF文件信息中的.gnu.version_r段来实现。具体步骤如下: 1. 使用命令readelf -V main查看原来的版本信息,找到版本为GLIBC_2.34的条目。 2. 根据引用中的信息,在文件中查找到GLIBC_2.34对应的索引地址。 3. 根据引用中的信息,使用readelf -V main_new命令查看修改后的版本信息,确认GLIBC_2.34已被修改为低版本。 4. 确保修改后的版本与您的系统中已安装的GLIBC版本相匹配。 通过这样的修改,您应该能够解决"/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found"的问题。请注意,修改ELF文件信息可能会对程序的稳定性和兼容性产生影响,建议在进行修改之前备份文件,并在修改后进行充分的测试。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [修改高版本glibc编译出的elf以支持低版本glibc环境客户机执行](https://blog.csdn.net/w16212/article/details/126577157)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found 解决办法](https://blog.csdn.net/LEON1741/article/details/78205198)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值