2010-10-05 91 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/

相關問題