【问题标题】:C compiler to build python from sources on various unix flavorsC 编译器从各种 unix 风格的源代码构建 python
【发布时间】:2012-12-11 09:55:04
【问题描述】:

我正在考虑从各种 UNIX 等操作系统的源代码构建 python(2.7 版本),包括 SUSE(桌面、服务器)、RHEL(桌面、服务器)、Ubuntu、AIX、Solaris (SPARC) 操作系统。

此外,其中一些操作系统可能必须同时构建 32 位和 64 位版本。我还想尽量减少对(共享)库的依赖。

也就是说,与 gcc 相比,使用本地 C 编译器 (cc) 是否更好?交叉编译更好吗?

谢谢。

【问题讨论】:

  • Python 源代码没有某种配置脚本来查找可用的编译器吗?此外,在许多情况下,本机编译器可能还是 GCC。
  • 是的,它确实有一个配置脚本。而且,它确实有一些选择编译器的逻辑。默认为 gcc,但在 AIX 上选择本地编译器。
  • 您对我的回答的评论需要这个问题:您为什么要这样做?这些系统已经提供了 Python 2.7 包。其他人已经这样做了。

标签: python linux unix gcc cross-compiling


【解决方案1】:

我认为最好在操作系统本身上构建,而不是“交叉编译”。尽管由于这都是 Unix,交叉编译也可以很好地工作,但需要付出一些努力。但是在有问题的操作系统上构建二进制文件可能更容易。我想这也取决于您是否静态链接。

Python 的构建过程会自己选择最好的编译器,并且至少在大多数情况下,它会更喜欢 gcc 而不是 cc。

【讨论】:

  • 是的,选择编译器是由配置脚本完成的。但是,我担心的是:在我的构建机器上,如果使用 gcc 进行构建,并且相同的二进制文件在没有安装 gcc 的客户端机器上的相同操作系统上运行,那么它可能会因为 gcc 相关(共享)而失败库依赖项。
  • @KiranMN:这不仅仅是 gcc 相关的,如果您不链接可执行文件中的库,则必须在目标机器上安装这些库。 Python 使用的许多库都是如此。解决方案通常是创建一个包,该包也强制安装依赖项。但是对于大多数(也许是全部?)目标,Python 已经存在这样的包。所以剩下一个简单的问题:你为什么要这样做?
  • 我们正在考虑使用 Python 从头开始​​实现一个新客户端。而且,要求是在各种平台上运行——比如 Windows(XP、Vista、7)、MAC OS X、Linux(如上所述)、Solaris(SPARC)、AIX(PowerPC)等。所以,我们需要一个 Python 运行时在这些平台上编译和执行我们的脚本。而且,通常并非所有平台都内置了 python,即使有,版本也可能不同。因此,我们考虑为类似 UNIX 的平台构建和捆绑 python 二进制文件。
  • 还有一件事是:我们要确保在构建 python 时启用了 ssl。 (某些预装的python可能不是这种情况)
  • @KiranMN:您应该关注的是为各种平台制作软件包。在其中许多平台上,您不必安装 Python,但可以使用平台附带的 Python。我希望(但我不确定)AIX 和 Solaris 在这里是棘手的。跨平台编译不太可能有帮助。
猜你喜欢
  • 2013-03-11
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
相关资源
最近更新 更多