错误 /lib/x86_64-linux-gnu/libc.so.6:找不到版本为“GLIBC_2.34”的库。

28

首先,我进行了很多谷歌搜索,但没有找到与我的情况相关的内容。我有一个ELF可执行文件,我正在尝试在我的Ubuntu WSL中运行它。我已经更改了权限 (chmod +x file),但当我运行它时,出现了这个错误。

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by myFile)

当我使用ld命令时,它会显示以下内容:

myFile(.eh_frame); no .eh_frame_hdr table will be created

当我尝试升级GLIBC时,它显示已经是最新版本。

Reading package lists... Done
Building dependency tree
Reading state information... Done
libc6 is already the newest version (2.31-0ubuntu9.7).
libc6 set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 215 not upgraded.

然后我尝试从https://packages.ubuntu.com/impish/amd64/libc6/download手动安装deb文件,但是出现以下情况:

dpkg: regarding libc6_2.34-0ubuntu3.2_amd64.deb containing libc6:amd64:
 libc6:amd64 breaks fakeroot (<< 1.25.3-1.1ubuntu2~)
  fakeroot (version 1.24-1) is present and installed.

dpkg: error processing archive libc6_2.34-0ubuntu3.2_amd64.deb (--install):
 installing libc6:amd64 would break fakeroot, and
 deconfiguration is not permitted (--auto-deconfigure might help)
Errors were encountered while processing:
 libc6_2.34-0ubuntu3.2_amd64.deb

4
GLIBC(libc6)您的操作系统(与内核一起),无法更改。建议:安装Ubuntu 22.04:具有libc6_2.35 ....(其中包括以前版本的对象:GLIBC_2.34等)。 - Knud Larsen
尝试检查这个解决方案,它对我有效。 - Gpp22
5个回答

9

免责声明:我不是Linux专业人员,只是发现了解决自己的glibc未找到错误消息的方法:

可能您无法使用二进制文件,因为它是使用gcc-11编译的,而您的Linux发行版和版本的gcc版本仅提供glibc_2.31(我猜测)。 您可以尝试从源代码编译程序。我不得不这样做来编译新的Stockfish 15版本,它还使用更新的glibc_2.32/2.33/2.34,而我的Linux Mint不提供它。 但是从源代码编译非常顺利。也许这对您来说是一个选项。


9

当执行make时,我在buildroot-2022.11中遇到了这个错误。

我使用的是Ubuntu 20.04,并按照链接中的描述添加了此存储库

sudo apt update
sudo apt install libc6

它自动为我安装了2.35版本。

我需要这个来在Ubuntu 20.04上安装ghdl 3.0.0,它似乎起作用了。 - poleguy

3
在我的情况下,将FROM go:1.21替换为FROM go:1.21.0-bullseye(docker),或者试试在那里调整

这正是我需要的优雅解决方案,用来修复我的便携式Go二进制构建。除了切换Docker镜像之外,我不需要做任何其他更改。非常感谢! - undefined

2

我有一个类似的情况,

我把我的执行文件从CentOS虚拟机1复制到另一个CentOS虚拟机2,然后遇到了同样的问题。我只需将源代码复制到VM2,重新编译它,问题就解决了。

我有一个Makefile和一个Shell脚本来编译它,所以编译过程很简单。更新glibc可能会导致其他问题并且更加复杂,我是一名采集员,希望能帮到您。


0

我曾经遇到过同样的问题,那是由于环境变量 LD_LIBRARY_PATH 被覆盖所导致的。尝试检查这个解决方案


这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - Moritz Ringler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接