首先,我用谷歌搜索了很多,但没有找到与我的情况相关的东西,我有一个 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
免责声明:我不是 Linux 专业人士,只是找到了解决我自己的 glibc 未找到错误消息问题的方法:
也许您无法使用该二进制文件,因为它是用 gcc-11 编译的,而您的 Linux 发行版的 gcc 版本和版本仅为 gcc-9,因此仅提供 glibc_2.31 (我猜)。 您可以尝试自己从源代码编译该程序。我必须使用新的 stockfish 版本 15 来执行此操作,该版本也使用更新的 glibc_2.32/2.33/2.34,而我的 linux-mint 不提供该功能。 但从源代码编译就像一个魅力。也许这是您的一个选择。
执行
make
时,我遇到了 buildroot-2022.11 的错误。
Ubuntu 20.04 - 添加了此存储库,如链接中所述
sudo apt update
sudo apt install libc6
它自动为我安装了2.35。
我也有类似的情况
我将执行文件从centos VM1复制到另一个centos VM2,然后我得到了同样的问题,我只是将源代码复制到VM2,然后重新编译它,然后问题就解决了。
我有一个makefile和一个shell脚本来编译它,所以编译过程很简单,更新glibc可能会导致其他问题并且更复杂,我是菜鸡,希望能帮助你
我遇到了同样的问题,这是关于环境变量LD_LIBRARY_PATH覆盖的问题。尝试检查这个解决方案
就我而言,将
FROM go:1.21
替换为 FROM go:1.21.0-bullseye
或 尝试在那里修补。