【问题标题】:how to Install glibc 2.3.2 on Gentoo?如何在 Gentoo 上安装 glibc 2.3.2?
【发布时间】:2011-08-01 01:14:35
【问题描述】:

我写了一个应用程序,我需要在 Gentoo 上执行它, 但是当我尝试运行它时,我收到以下消息:

/lib/libc.so.6:找不到版本“GLIBC_2.3.4”(/usr/local/myapp/lib/myapplib.so.1 需要)

这个 gentoo 中当前的 GLIBC 版本是 2.3.2。

我不能更新这个glibc,因为我没有权限,所以我需要'降级' 我的 glibc 到相同的版本(2.3.2)...我该怎么做?

tks,

【问题讨论】:

  • 您可以手动或使用发行版的包管理器来完成。我建议你不要。请参阅 mattst88 的答案。

标签: glibc libc gentoo


【解决方案1】:

“/lib/libc.so.6: version `GLIBC_2.3.4' not found”问题来自于尝试在具有旧版本 glibc 的系统上运行针对新 glibc 编译的二进制文件。出于这个原因,强烈不建议降级 glibc。

既然您说您编写了应用程序,在我看来,最简单的解决方案是在您计划运行它的系统上重新编译该应用程序。

【讨论】:

  • 这是正确答案(嗨,马特!)。看起来您在另一个系统上针对该系统的较新 glibc 编译了二进制文件,然后尝试在具有较低版本 glibc 的 Gentoo 机器上运行它。只要它们保持在同一个 glibc 修订版中,您就可以在某些二进制发行版上摆脱这种情况。但是你会发现很难迁移到完全不同的发行版,尤其是像 Gentoo 这样的发行版,其中每个系统都是独一无二的,无需重新编译源代码。如果您正确构建了 Makefile,只需重新运行 configure 然后 make 即可设置。
【解决方案2】:

我实际上正在努力解决同样的问题,所以也许我有一些可以提供帮助的信息。

简而言之,您的二进制文件被编译为查找 libc.so.6。 GLIBC_2.3.4 在 libc.so.5 中。据我所知,如果你在你的开发机器上降级你的 glibc,你的一些其他程序可能无法正常工作(因为它们被编译为寻找当前版本)。不知何故,CentOS/RHEL 有一个 compat-glibc 包,它可以与当前 glibc 一起存在而不会导致此错误。如果您的开发盒使用 CentOS/RHEL,请安装该软件包/重新编译,您应该一切顺利。您可能需要使用较旧的编译器来查找较旧的库。如果您不是在 CentOS/RHEL 上开发,请继续。

我今天的攻击计划是从源代码编译 glibc。这意味着使用与旧版本 glibc 大约同时发布的编译器。您可能会遇到一些绊脚石(例如需要旧版本的 buildutils 等),但我希望一旦 libc.so.5 被编译并安装到 /usr/local/lib 我的应用程序会在它之前找到它在 /lib 中找到 libc.so.6。

原来如此。这不适合胆小的人,也绝对不是一个快速的解决方案。今天我计划对此进行测试,所以我不能说这是正确的解决方案。拜托,hivemind..如果我完全错了,请纠正我,把这个可怜的灵魂从这条蜿蜒曲折的道路上拯救出来:-)

编辑:link to glibc sources

【讨论】:

    猜你喜欢
    • 2013-10-16
    • 2014-02-06
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    相关资源
    最近更新 更多