首先,我搜索了很多,但没有找到与我的案例相关的内容,我有一个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
2条答案
按热度按时间yhqotfr81#
免责声明:我不是Linux专业人士,只是找到了一种方法,我自己的问题与glibc未找到错误消息:
也许你不能使用二进制文件,因为它是用gcc-11编译的,而你的linux发行版的gcc版本和version only是gcc-9,因此只提供glibc_2.31(我猜)。你可以试着自己从源代码编译程序。我不得不用新的Stockfish版本15来做这件事,它也使用了更新的glibc_2.32/2.33/2.34,我的linux-mint没有提供这个功能。但是从源代码编译工作起来很有魅力。也许这是你的一个选择。
chhkpiq42#
我也有类似的情况,
我把我的执行文件从一个centos VM1复制到另一个centos VM2,然后我得到了同样的问题,我只是把源代码复制到VM2,并重新编译它,然后问题就解决了。
我有一个makefile和一个shell脚本来编译它,所以编译过程很简单,更新glibc可能会引起其他问题,比较复杂,我是一个财迷,希望能帮助到你