0

我写了一个应用程序,我需要在 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,

4

2 回答 2

1

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

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

于 2011-05-24T01:52:29.520 回答
0

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

简而言之,您的二进制文件被编译为查找 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..如果我完全错了,请纠正我,把这个可怜的灵魂从这条蜿蜒曲折的道路上拯救出来:-)

编辑:链接到 glibc 源

于 2011-04-08T12:37:21.217 回答