2009-08-06 11 views
8

मुझे बिनटिल्स 2.18 के साथ जीसीसी 3.2.3 का उपयोग करके साझा लाइब्रेरी को जोड़ने में समस्या हो रही है।लिंकर विफलता के साथ सहायता: .gnu.linkonce.t

.gnu.linkonce.t _... अनुभाग .rodata में संदर्भित:: जब मैं पुस्तकालय मैं निम्नलिखित त्रुटि मिलती है लिंक करने का प्रयास में ही निकाल दिया अनुभाग .gnu.linkonce.t परिभाषित ...

मैं इस पर गुमराह करने की उचित मात्रा में है और ज्यादातर जगहों से यह संकेत मिलता है कि यह एक दमन है जो कि बिनुटिल्स 2.17 में पेश किया गया है और बाद में 2.18.50 में तय किया गया है, लेकिन अगर कोई जानता था कि इस मुद्दे के बिना किसी विशेष कार्यवाही के बारे में कोई उत्सुकता है तो मैं उत्सुक था binutils और जीसीसी को छूने के लिए।

धन्यवाद।

उत्तर

6

यह एक अजीब परिणाम साबित हुआ जहां सिस्टम एक अलग बिनटिल के साथ जीसीसी को मेल नहीं कर रहा था।/usr/bin/gcc का उपयोग किया जा रहा था (3.2.3) और/usr/local/bin/ld का उपयोग पथ में/usr/bin के सामने/usr/local/bin के कारण किया जा रहा था। जब हमने स्विच किया ताकि/usr/bin पथ के सामने था, उचित/usr/bin/ld को (binutils 2.14) कहा जाता था और ऐसा लगता है कि समस्या हल हो गई है।

0

यह बग पाया गया था और यहां रिपोर्ट किया गया था GCC bugzilla, बग पर केंद्रित एक छोटा टेस्टकेस उन टिप्पणियों में प्रदान किया गया था जिन्हें मैंने वास्तव में समय बर्बाद नहीं किया था। यह बग GCC 3.4.6 से शुरू हो गया था।

binutils 2.15.92 और binutils 2.17.50 के साथ मुझे यह समस्या मिली है और दोनों काम नहीं कर पाए। इसलिए, मेरे लिए यह स्पष्ट रूप से GCC और binutils संस्करणों का मिश्रण नहीं था जो समस्या उत्पन्न करते थे।

यदि आपको पुराने GCC संस्करण का उपयोग करना होगा, तो आप H.J. द्वारा प्रदान किए गए इस पैच का उपयोग कर सकते हैं और मैन्युअल रूप से इसे अपने पुराने GCC का पुनर्निर्माण कर सकते हैं।

Fix without COMDAT group

Fix with COMDAT group

दिए गए लिंक्स कि सुधार के लिए सटीक diff से पता चलता में attachements की जाँच करें।

मैं इसे अपने आप को किया था और यह परीक्षण किया है और इसे सफलतापूर्वक काम किया है, यह फिर से बनाया पहले ठीक "COMDAT समूह के बिना" के साथ GCC 3.3.1 पैचिंग, और binutils 2.15.92 और binutils 2.17.50 साथ इस्तेमाल किया।

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