在64位Linux上编译32位Python模块(如NumPy)

3
在一个Python测试框架中,我们通过Tkinter与Tcl API交互以进行Spirent testcenter测试。这个Spirent testcenter API仅支持32位,这意味着我们的Tcl解释器需要是32位的。我们使用Python控制Tkinter从而操作Tcl API。(我知道最近发布了一个testcenter的Python驱动程序,但它也只支持32位。)由于Tkinter已经集成在Python中,因此Python安装程序也需要是32位的。
我想在CentOS x86_64工作站上运行这个框架。我已经成功地将testcenter驱动程序、ActiveTcl和Python都安装为32位,并且它们可以正常工作。然而,这个测试框架还依赖于一些Python包(例如numpy),这些包也需要构建为32位才能使用。然而,我无法找出如何以32位构建这些包。我尝试给distutils build命令传递编译器选项-m32(即python setup.py build),但它被忽略了。似乎有一个-p选项可以传递平台,但这仅适用于Windows操作系统。我还尝试使用32位编译器,但是distutils似乎只有一个静态的可用编译器列表,而我相信只有英特尔编译器(即商业软件...)是32位的。
有人有关于如何在64位Linux架构上构建32位Python模块,或者如何以64位构建Python使得包的安装更容易,并集成32位的tcl/tk的绝妙想法吗?
谢谢。
Wim

你需要拥有32位的Python才能够加载32位的模块(许多模块是共享库)。另外,编译和链接都需要使用gcc-m32选项。 - Maxim Egorushkin
感谢您的回复。正如我所提到的,我已经安装了32位版本的tcl和Python(2.7)。问题是如何在x86_64机器上为这个32位版本的Python构建32位模块。 - user1379192
然后尝试始终使用“-m32”,并使用32位Python调用distutils。 - Maxim Egorushkin
1个回答

2

如果您想按照您的方式构建模块,您需要在尝试编译模块之前设置CFLAGS=-m32和LDFLAGS=-m32。

例如:

CFLAGS=-m32 LDFLAGS=-m32 python setup.py install

我想我首先要做的就是获取一个32位的Python? - schlamar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接