2010-10-05 95 views
7

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

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

我发现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,etc.pp.的-32bit包安装,但当然,它们驻留在/ lib和/ usr/lib下,而不是/ lib64和/ usr/lib64下。

当我开始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下的命令?

任何帮助,非常感谢。

问候, 菲利普

+0

它可能是矫枉过正的,但一种方法是建立一个32位chroot jail并在那里编译它。它至少可以保证编译时不会混合32位和64位库。 – 2010-10-05 20:20:31

+0

这绝对是过火。我是世界上唯一想要一个32位Linux版本的Python的人?我现在正在Google上搜索几个小时,只能找到适用于Mac的说明。除了上面提到的博客帖子之外,没有人对Linux有指导! – Philipp 2010-10-05 20:26:37

+0

你不是唯一的一个。我用我的,因为IDA Pro的Python绑定的是32位的,我不希望有一个完整的监狱......我只是做它用你上面的指针链接,它的工作主要是对我很好。只有_bsddb和_tkinter模块没有构建。前者是因为它试图DB-4.7链接(这是我的64位版本),而不是DB-4.8这是我的32位版本。后者是因为我没有任何tk 32位。 – 246tNt 2010-11-02 21:20:07

回答

6

你需要合适的 标志传递给gcc和LD告诉编译器 编译并产生32位二进制文​​件。使用--build--host。您需要使用./configure --build=x86_64-pc-linux-gnu --host=i686-pc-linux-gnu编译64位Linux系统中的32位Linux。

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

+0

非常感谢。现在就开始工作了。 – Philipp 2010-11-17 11:38:45

+0

“配置:错误:交叉构建需要主机的readelf”。运行“locate”* -readelf'“只给出”/ usr/bin/x86_64-linux-gnu-readelf“。我想我必须找到并安装一个能提供“i686-linux-gnu-readelf”的软件包? – 2016-01-08 02:36:45

+0

@JonathanHartley如果你没有合适的构建工具(可能是一个交叉编译器),它不会工作;没有:) – 2016-01-09 03:34:59

4

至于为什么,因为柯克(也可能是其他人)难怪,这里有一个例子:我有含轻质对象类型的字典的大类型的字典一个Python应用程序。由于指针的缘故,这在64位上消耗的内存几乎是32位上的两倍。我需要每次运行2GB(32位)的一些实例,并且额外的RAM快速累计。对于FreeBSD,32bit-on-64bit jail的详细配方在这里http://www.gundersen.net/32bit-jail-on-64bit-freebsd/

相关问题