You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04下GCC编译C程序失败:无法找到libc.so.6等文件求助

解决Ubuntu 20.04编译C程序时ld无法识别.relr.dyn段的问题

错误原因

报错中的.relr.dyn是glibc 2.34及以上版本引入的新重定位段,而Ubuntu 20.04默认的binutils(包含ld链接器)版本不支持该段。你重新安装GCC及相关库时,可能意外升级了系统glibc,或者安装了与当前系统不匹配的binutils版本,导致链接器无法识别系统库中的新段,进而出现“无法找到libc.so.6”的错误。

解决方案

  • 检查当前glibc版本
    执行命令查看系统glibc版本:

    ldd --version
    

    Ubuntu 20.04官方默认版本应为2.31,若输出版本高于此,说明glibc被意外升级,需要降级。

  • 降级glibc到系统兼容版本
    重新安装Ubuntu 20.04官方支持的glibc包(版本号可通过apt show libc6确认最新可用的2.31分支版本):

    sudo apt install --reinstall libc6=2.31-0ubuntu9.12 libc6-dev=2.31-0ubuntu9.12
    
  • 同步binutils版本到系统默认
    确保链接器所属的binutils包与系统版本匹配,重新安装:

    sudo apt install --reinstall binutils
    
  • 验证编译
    修复后重新编译测试程序(注意修正代码中printf字符串的换行格式,原代码缺少转义符\n):

    #include <stdio.h>
    int main()
    {
        printf("Hello, world!\n");
        return 0;
    }
    

    编译运行:

    gcc hello.c -o hello
    ./hello
    

内容的提问来源于stack exchange,提问作者Jacute

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:55:27