如何修复“/lib/x86_64-linux-gnu/libc.so.6:未找到版本‘GLIBC_2.14’”?

如何修复“/lib/x86_64-linux-gnu/libc.so.6:未找到版本‘GLIBC_2.14’”?

如何修复此错误:

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found

平台:

Linux alef 3.2.0-4-amd64 #1 SMP Debian 3.2.35-2 x86_64 GNU/Linux

答案1

这意味着该程序是针对 glibc 版本 2.14 编译的,并且需要该版本才能运行,但您的系统安装了旧版本。您需要针对系统上的 glibc 版本重新编译该程序,或者安装较新版本的 glibc(Debian 中的“libc6”包)。

Debian 在“实验”存储库中有 glibc 2.16,但重新编译该程序是更安全的选择。Glibc 是一切依赖,因此升级它可能会产生深远的影响。尽管 Debian 的 glibc 2.16 软件包可能没有问题,但它位于实验性存储库中,这意味着它还没有接受太多测试。

答案2

我已经发布了我的解决方案这里,转载给大家参考。

在我的情况下,当我尝试在 Debian Wheezy(默认安装 glibc 2.13)上使用 GLIBC_2.14 运行应用程序(在 Ubuntu 12.04 LTS 上编译)时出现错误。

我使用一种棘手的方法来运行它,并得到了正确的结果:

  1. 下载libc6libc6-dev来自 Ubuntu 12.04 LTS

  2. 运行 dpkg 命令将它们安装到目录中(例如 /home/user/fakeroot/):

    $ dpkg -x libc6-dev_2.15-0ubuntu10.6_amd64.deb /home/user/fakeroot/
    $ dpkg -x libc6_2.15-0ubuntu10.6_amd64.deb /home/user/fakeroot/
    
  3. 使用指定的 LD_LIBRARY_PATH 运行命令:

    $ LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND
    
  4. 我的应用程序仅使用 GLIBC_2.14 中的 memcpy(),它可以工作。

我不知道它是否能成功运行于其他应用程序。希望它能有所帮助。

答案3

dpkg如果由于 libc 错误而无法使用,请尝试/bin/busybox sh。Busybox 是静态链接的,因此可以与损坏的 libc6 一起使用。

然后你可以使用 wget 从中获取 libc6 debhttps://packages.ubuntu.com,,ar x libc6*.deb并且unxz data.tar.xz(小心!)tar vxf data.tar -C /让事情重新开始。

(搞笑的背景:我编写了一个 python3 脚本来将软件包降级到发行版,以便使部分执行发布更新升级的系统恢复到升级前的状态——我忘记将 libc6 留到最后)

相关内容