2010-10-05 15 views
7

मैं एक पूर्ण दोपहर अब 32bit मोड में निर्माण करने के लिए अजगर प्राप्त करने की कोशिश के लिए अटक कर रहा हूँ। मैं openSUSE 11.3 के साथ एक 64 बिट Linux मशीन चलाने के लिए, मैं आवश्यक -devel और -32bit संकुल 32bit मोड में अनुप्रयोगों के निर्माण करने के लिए स्थापित की है।64 बिट लिनक्स पर 32 बिट पायथन 2.6 कैसे बनाएं?

अजगर का निर्माण के साथ समस्या यह मेकअप रन अपने आप में नहीं हो रहा है, लेकिन बाद में setup.py के चलाने में, मेकअप द्वारा लाया।

मुझे उबंटू लिनक्स के लिए निम्नलिखित निर्देश मिले: एच ** पी: //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 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 

तो LDFLAGS = एल/lib आदेश का पालन करने के setup.py पाने के लिए ??

किसी भी मदद की बहुत सराहना की जाती है।

सादर, फिलिप

+0

यह अधिक हो सकता है, लेकिन ऐसा करने का एक तरीका 32-बिट क्रोट जेल स्थापित करना और इसे संकलित करना है। यह कम से कम गारंटी देता है कि संकलन करते समय आप 32 और 64 बिट पुस्तकालयों को मिश्रित नहीं करेंगे। –

+0

यह निश्चित रूप से अधिक है। क्या मैं 32 बिट लिनक्स के अजगर के निर्माण के लिए दुनिया का एकमात्र व्यक्ति हूं ??? मैं घंटों के लिए गुगल रहा हूं और केवल मैक के लिए निर्देश ढूंढ रहा हूं। ऊपर वर्णित ब्लॉगपोस्ट के अलावा, लिनक्स के लिए कोई भी निर्देश नहीं है! – Philipp

+0

आप एकमात्र नहीं हैं। मैं आईडीए प्रो पायथन बाइंडिंग के कारण मेरा उपयोग करता हूं क्योंकि 32 बिट्स हैं और मुझे पूर्ण जेल नहीं चाहिए ... मैंने अभी आपके द्वारा ऊपर दिए गए लिंक का उपयोग करके यह किया है और यह मेरे लिए अधिकतर ठीक काम करता है। केवल _bsddb और _tkinter मॉड्यूल नहीं बनाया गया था। पूर्व क्योंकि यह db-4.8 मेरी 32 बिट संस्करण है के बजाय db-4.7 से जोड़ने के लिए (मेरी 64bits संस्करण है) की कोशिश की। उत्तरार्द्ध क्योंकि मेरे पास कोई टीके 32 बिट्स नहीं है। – 246tNt

उत्तर

6

आप जीसीसी और ld के लिए उपयुक्त झंडे पारित करने के लिए संकलन और 32 बिट binaries निर्माण करने के लिए संकलक बताने के लिए की आवश्यकता होगी।

उपयोग --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-बिट लिनक्स के लिए संकलित करने के लिए की जरूरत है।

नोट: आपको अभी भी अन्य ./configure विकल्प जोड़ने की आवश्यकता है।

+0

आपको बहुत बहुत धन्यवाद। अब तक काम कर रहा है। – Philipp

+0

"कॉन्फ़िगर करें: त्रुटि: होस्ट के लिए क्रॉस बिल्ड के लिए आवश्यक है"। चल रहा है "पता लगाएँ" * -readelf '"केवल"/usr/bin/x86_64-linux-gnu-readelf "देता है। मुझे लगता है कि मुझे एक पैकेज ढूंढना और इंस्टॉल करना है जो "i686-linux-gnu-readelf" प्रदान करेगा? –

+0

@ जोनाथन हार्टले यदि आपके पास उचित निर्माण उपकरण नहीं हैं (और शायद एक क्रॉस कंपाइलर) यह काम नहीं करेगा; नहीं :) –

4

के बारे में क्यों, किर्क के बाद से (और शायद अन्य) आश्चर्य है, यहाँ एक उदाहरण है: मैं हल्के वजन वस्तुओं युक्त dicts की बड़ी dicts के साथ एक अजगर एप्लिकेशन है। पॉइंटर्स के कारण 32 बिट पर यह 64 बिट पर लगभग दोगुनी रैम का उपभोग करता है। मुझे प्रत्येक 2 जीबी (32 बिट) के कुछ उदाहरण चलाने की ज़रूरत है और अतिरिक्त रैम जल्दी से जुड़ जाता है। फ्रीबीएसडी के लिए, 32 बिट-ऑन -64 बिट जेल के लिए एक विस्तृत नुस्खा यहां है http://www.gundersen.net/32bit-jail-on-64bit-freebsd/

संबंधित मुद्दे