如何在64位Linux上构build32位Python 2.6?

我坚持了整整一个下午试图让pythonbuild立在32位模式。 我使用openSUSE 11.3运行64位Linux机器,我安装了必要的-devel和-32bit软件包,以32位模式构build应用程序。

Python构build的问题似乎不是在make运行本身,而是在后来运行的make.py调用setup.py。

我发现Ubuntu Linux的以下指令:h ** p://indefinitestudies.org/2010/02/08/how-to-build-32-bit-python-on-ubuntu-9-10-x86_64/

当我如上所述,我得到以下输出:

http://pastebin.com/eP8WJ8V4

但是我有libreadline,libopenssl等的-32位软件包。 安装,但当然,他们驻留在/ lib和/ usr / lib而不是/ lib64和/ usr / lib64。

当我启动这个构build的python二进制文件时,我得到:

./python Python 2.6.6 (r266:84292, Oct 5 2010, 21:22:06) [GCC 4.5.0 20100604 [gcc-4_5-branch revision 160292]] on linux2 Type "help", "copyright", "credits" or "license" for more information. Traceback (most recent call last): File "/etc/pythonstart", line 7, in <module> import readline ImportError: No module named readline 

那么如何让setup.py观察LDFLAGS = -L / lib命令?

任何帮助是极大的赞赏。

问候,菲利普

您需要将相应的标志传递给gcc和ld,以告诉编译器编译并生成32位二进制文​​件。

使用--build--host

 ./configure --help System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] 

您需要使用./configure --build=x86_64-pc-linux-gnu --host=i686-pc-linux-gnu来编译64位Linux系统中的32位Linux。

注意:您仍然需要添加其他./configure选项。

关于为什么,因为柯克(也可能是其他人)想知道,这里是一个例子:我有一个Python的应用程序与大量的包含轻量级对象的字典。 由于指针的缘故,这在64位上消耗的内存几乎是32位上的两倍。 我需要运行一些2GB(32位)的实例,额外的内存很快加起来。 对于FreeBSD,32bit-on-64bit监狱的详细配方在这里http://www.gundersen.net/32bit-jail-on-64bit-freebsd/