/lib64/libc.so.6 的标准解决方案:找不到版本“GLIBC_2.14”
standard solution for /lib64/libc.so.6: version `GLIBC_2.14' not found
我在运行编译2中编译的GLIBC 2.12版本的代码时出现这个错误。19.What是这个问题的标准解决方案,这样代码就可以运行 在所有 versions.Upgrading 目标机器到 2.19 不是一个选项,因为这个软件应该 运行 至少 5000 machines.Dow 将开发机器分级到 2.12 也不是一个适当的解决方案。因为2.19只是一个例子。 5000台目标机器可以有任何version.What是这个的标准解决方案吗?无论如何静态编译?我的意思是将整个 GLIBC 与代码捆绑在一起。
最简单的解决方案是简单地创建一个用于生产构建的 "build server",并将此服务器保持在您需要支持的所有内容的最旧版本上,包括 glibc。
如果您不想使用物理机器,可以使用开发服务器中的 VM 来完成此操作。
针对 glibc 编译的二进制文件应该是向前兼容的;您针对 glibc 2.19 编译的二进制文件使用的是出现在 2.14 中的 API 版本。相反,如果您针对 2.12 进行编译,它也应该在运行时与 Glibc 2.19 一起工作。
在 Python-land,他们现在提供基于 Centos 5.11 Docker 图像的预构建 Linux C 扩展; The PEP 0513 explains details。他们似乎在那里工作得很好。 Centos 5.11 似乎有 glibc 2.5; Centos 6 有 glibc 2.12。我自己在 Ubuntu 14.04 和 15.10 上使用这些预构建的 .so
s 没有任何问题。
还有一个非常 hackish 的解决方案,通过将所需的 libc.so
(2.19) 文件放在特定目录中(只需将其复制过来),创建一个 运行ner 脚本,您可以在其中设置LD_LIBRARY_PATH
具有特定目录,然后 运行 可执行文件。系统应该在系统提供的目录之前从特定目录中选择 libc.so,因此它应该可以工作。
我在运行编译2中编译的GLIBC 2.12版本的代码时出现这个错误。19.What是这个问题的标准解决方案,这样代码就可以运行 在所有 versions.Upgrading 目标机器到 2.19 不是一个选项,因为这个软件应该 运行 至少 5000 machines.Dow 将开发机器分级到 2.12 也不是一个适当的解决方案。因为2.19只是一个例子。 5000台目标机器可以有任何version.What是这个的标准解决方案吗?无论如何静态编译?我的意思是将整个 GLIBC 与代码捆绑在一起。
最简单的解决方案是简单地创建一个用于生产构建的 "build server",并将此服务器保持在您需要支持的所有内容的最旧版本上,包括 glibc。
如果您不想使用物理机器,可以使用开发服务器中的 VM 来完成此操作。
针对 glibc 编译的二进制文件应该是向前兼容的;您针对 glibc 2.19 编译的二进制文件使用的是出现在 2.14 中的 API 版本。相反,如果您针对 2.12 进行编译,它也应该在运行时与 Glibc 2.19 一起工作。
在 Python-land,他们现在提供基于 Centos 5.11 Docker 图像的预构建 Linux C 扩展; The PEP 0513 explains details。他们似乎在那里工作得很好。 Centos 5.11 似乎有 glibc 2.5; Centos 6 有 glibc 2.12。我自己在 Ubuntu 14.04 和 15.10 上使用这些预构建的 .so
s 没有任何问题。
还有一个非常 hackish 的解决方案,通过将所需的 libc.so
(2.19) 文件放在特定目录中(只需将其复制过来),创建一个 运行ner 脚本,您可以在其中设置LD_LIBRARY_PATH
具有特定目录,然后 运行 可执行文件。系统应该在系统提供的目录之前从特定目录中选择 libc.so,因此它应该可以工作。