गुग्लिंग के घंटों के बाद, मैं आपको विशेषज्ञों से हार मानने का फैसला करता हूं। मैं अपने 64 Ubuntu 11.10 में 32-बिट एप्लिकेशन (अगर किसी को दिलचस्पी है तो xgap) बनाने की कोशिश कर रहा हूं। मैंने CFLAGS = -m32 और LDFLAGS = -L / usr / lib32 को मेकफाइल में जोड़ा । ऑब्जेक्ट्स को 32 बिट फाइन में बनाया गया है। अंतिम चरण एक्स निष्पादन के लिए सभी वस्तुओं और पुस्तकालयों को इस निष्पादन योग्य --- xgap से जोड़ना है। किसी तरह यह मुझे यह त्रुटि देता रहता है:
gcc -o xgap xcmds.o utils.o gapgraph.o gaptext.o pty.o popdial.o xgap.o selfile.o -L/usr/lib32 -lXaw -lXmu -lXt -lXext -lX11 -lSM -lICE
/usr/bin/ld: skipping incompatible /usr/lib32/libXmu.so when searching for -lXmu
...
/usr/bin/ld: i386 architecture of input file `xcmds.o' is incompatible with i386:x86-64 output
...
मैंने ia32- lib और mutilib समर्थन स्थापित किया है । मुझे लगता है कि मुझे सिर्फ एक i386 आउटपुट उत्पन्न करने के लिए लिंकर को मजबूर करने की आवश्यकता है। मैंने अपने gcc कमांड में दो ld झंडे लगाने की कोशिश की जैसा कि ऊपर दिखाया गया है: -melf_i386 और -oformat elf32-i386 । लेकिन क्या होता है कि gcc / usr / lib32 में अब 32 बिट लाइब्रेरी की खोज नहीं करता है । मुझे आश्चर्य है कि क्या मुझे उन झंडों को किसी निश्चित क्रम में लगाने की आवश्यकता है?
किसी भी विचार और मदद के लिए धन्यवाद!
संपादित करें: जब मैं अपने अंतिम gcc कमांड में -m32 ध्वज जोड़ता हूं (लिंकिंग चरण जिसे मैं मानता हूं), भले ही मेरे पास -L / usr / lib32 झंडा हो, gcc अब / usr / lib32 में खोज नहीं करता है (वास्तव में अजीब ...) और निम्न त्रुटि उत्पन्न करता है:
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../libXaw.so when searching for -lXaw
/usr/bin/ld: skipping incompatible /usr/lib/libXaw.so when searching for -lXaw
/usr/bin/ld: cannot find -lXaw
collect2: ld returned 1 exit status
किसी को भी किसी भी विचार क्यों ऐसा होता है? मैं कॉन्फ़िगर करने और बनाने के लिए ऑटो टूल का उपयोग कर रहा हूं। मैं वास्तव में उन स्क्रिप्ट फ़ाइलों को संशोधित करने में अच्छा हूं।
EIDT : मैंने समस्या हल कर दी। मुझे लगता है कि जीसीसी एक स्थिर पुस्तकालय संग्रह की उम्मीद कर रहा था। लिंकिंग के लिए आवश्यक सभी .a अभिलेखागार को डाउनलोड करने के लिए मैंने http://ubuntuforums.org/showthread.php?t=474790 से getlibs स्क्रिप्ट का उपयोग किया । फिर जीसीसी ने काम किया। मुझे लगता है कि जीसीसी में खोज किया था / usr / lib32 निर्देशिका लेकिन नहीं मिला ए अभिलेखागार तो मानक निर्देशिका जो है में खोज करने के लिए पर चला गया / usr / lib जहां यह पाता है असंगत, .so * फ़ाइलें।
लेकिन फिर सवाल यह है: * .so फ़ाइलों में / usr / lib32 / पैकेज से ia32-libs वास्तव में लिंक करने के लिए आवश्यक पुस्तकालयों नहीं है? उन फ़ाइलों / usr / lib32 / के लिए क्या उपयोग किया जाता है?