【问题标题】:How to compile python3.6 program for Redhat 5.8/CentOS 5?如何为 Redhat 5.8/CentOS 5 编译 python3.6 程序?
【发布时间】:2019-01-16 22:08:15
【问题描述】:

我在 CentOS 6.8 上使用 pyinstaller 编译了 python3.6 程序,并在较新版本的 Linux 上进行了测试。它按预期工作。 CentOS 6.8 已安装 GLIBC 2.12

pyinstaller --onefile --clean --hidden-import sqlite3 --hidden-import pycryptodome my_python.py

但是,我在 Redhat 5.8 上执行编译程序时遇到以下错误,因为它安装了 GLIBC 2.5

[24522] Error loading Python lib '/tmp/_MEIl16Rvq/libpython3.6m.so.1.0': dlopen: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by /tmp/_MEIl16Rvq/libpython3.6m.so.1.0)

您能帮我在 CentOS 6 上为 Redhat 5.8 编译 python3.6 程序吗?

P.S:我无法更新 GLIBC,因为我要将同一个程序分发到许多 Linux 服务器。

【问题讨论】:

  • 您在一个系统上编译,然后在另一个系统上运行它?如果依赖不一样,那就不行了,比如这里的glibc。

标签: linux python-3.x pyinstaller centos6 glibc


【解决方案1】:

这个问题的答案列在pyinstaller's FAQ 作为GNU/Linux 部分的第一个。在这里,我强调的是稍微精简的版本。

PyInstaller 构建的可执行文件不是完全静态的,因为它仍然依赖于系统 libc。在 Linux 下,GLIBC 的 ABI [...] 不向前兼容。 [...] 提供的二进制引导加载程序应该适用于较旧的 GLIBC。但是,libpython.so 和其他动态库仍然依赖于较新的 GLIBC。 解决方案是在您现有的最旧系统上编译 Python 解释器及其模块(也可能是引导加载程序),以便它与最旧版本的 GLIBC 链接。

【讨论】:

  • 我正在尝试在 Redhat5.8 上安装 python3.6,但不幸的是,不支持存储库。有什么办法可以在 Redhat 5.8 上安装 python3.6 吗?
  • 从源代码编译始终是一种选择。在这里 (stackoverflow.com/questions/8087184/installing-python-3-on-rhel) 你可以看到详细的过程。希望对你有帮助
猜你喜欢
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
  • 2015-04-14
  • 2021-11-03
相关资源
最近更新 更多