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 --versionUbuntu 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
相关产品推荐
相关产品推荐

