我写了一个应用程序,我需要在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,
答案 0 :(得分:1)
“/ lib / libb.so.6:版本`GLIBC_2.3.4'未找到”问题来自于尝试在具有旧版本glibc的系统上运行针对较新glibc编译的二进制文件。由于这个原因,不鼓励降级glibc 强烈。
由于您说您编写了应用程序,因此在我看来,最简单的解决方案是在您计划运行它的系统上重新编译应用程序。
答案 1 :(得分:0)
我实际上正在努力解决同样的问题,所以也许我有一些可以提供帮助的信息。
简而言之,您的二进制文件已编译为查找libc.so.6。 GLIBC_2.3.4位于libc.so.5中。据我所知,如果你在开发机器上降级你的glibc,你的其他一些程序可能无法正常工作(因为它们被编译为寻找当前版本)。不知何故,CentOS / RHEL有一个compat-glibc软件包可以在当前glibc的旁边生成而不会导致此错误。如果您的开发框使用CentOS / RHEL,请安装该软件包/重新编译,您应该很高兴。您可能需要使用较旧的编译器来查找旧库。如果您没有在CentOS / RHEL上开发,请继续。
我今天的攻击计划是从源代码编译glibc。这意味着使用与旧版glibc大致同时发布的编译器。您可能遇到一些绊脚石(例如需要较旧版本的buildutil等),但我希望一旦libc.so.5被编译并安装到/ usr / local / lib我的应用程序将在它之前找到它在/ lib中找到libc.so.6。
就是这样。它不适合胆小的人,它绝对不是一个快速的解决方案。今天我打算对此进行测试,所以我不能说它是正确的解决方案。请,hivemind ..如果我是完全错误的纠正我并将这个可怜的灵魂从这条蜿蜒曲折的道路中拯救出来: - )