2012-11-02 27 views
13

साथ गतिशील रूप से कुछ अन्य पुस्तकालय मैं स्थिर, अपने प्रोजेक्ट को glibc से जोड़ने के लिए है, क्योंकि लक्ष्य मंच केवल एक बहुत पुरानी एक का समर्थन करता है की जरूरत है (लेकिन यह मेरी toolchain से स्थिर जुड़ा हुआ glibc के साथ काम करता है, मैं यह जाँच की है)लिंक glibc स्थिर लेकिन जीसीसी

दुर्भाग्य से, इस आवेदन pthread पुस्तकालय का उपयोग करना है, लेकिन स्थिर जुड़ा हुआ libpthread बहुत अधिक स्थान लेता है।

मैं चाहूँगा स्थिर glibc से जोड़ने के लिए, और गतिशील रूप pthread।

इस आदेश

powerpc-unknown-linux-gnu-gcc object_files -lrt -lpthread -Wl,-Bstatic -lc 

चलाने के बाद मैं:

/powerpc-unknown-linux-gnu/bin/ld: cannot find -lgcc_s 
+0

आप '-lc' के बाद' -Wl, -Bdynamic' जोड़ने की आवश्यकता होगी है। –

+0

ओह, मुझे खेद है कि यह मेरी गलती थी। मैं लिंक करने के लिए glibc स्थिर – nkdm

+0

संबंधित चाहता था: http://stackoverflow.com/questions/809794/use-both-static-and-dynamically-linked-libraries-in-gcc –

उत्तर

12

वहाँ एक -static-libgcc कि अगर मदद मिल सकती है

+0

धन्यवाद, यह काम करता है, लेकिन कार्यक्रम अभी भी इसके साथ बहुत बड़ा है। – nkdm

+1

@nkdm तो आप glibc नहीं है (जो है क्या यह तो सवाल के शीर्षक के बारे में है) रिकॉर्ड libgcc के लिए आर के साथ जाने की जरूरत है .. uclibc – Anycorn

+10

की के सुझाव। glibc सी मानक पुस्तकालय के जीएनयू कार्यान्वयन है। libgcc gcc internals का हिस्सा है और जीसीसी द्वारा प्रयोग किया जाता है "जब भी इसे कुछ ऑपरेशन करने की आवश्यकता होती है जो इनलाइन कोड को उत्सर्जित करने के लिए बहुत जटिल है"। –

8

आप -static-Wl,-static का उपयोग करना चाहिए, नहीं। उत्तरार्द्ध जीसीसी के ज्ञान को नजरअंदाज, और इसलिए जीसीसी अभी भी स्थिर libgcc_eh.a बजाय साझा libgcc_s.so लिंक करने के लिए कोशिश कर रहा है।

अपने उद्देश्य स्थिर libc लिंक लेकिन गतिशील libpthread रहा है, यह बस नहीं काम करने के लिए जा रहा है। आप libpthread के विभिन्न संस्करणों को मिश्रण और मिलान नहीं कर सकते; यह glibc का हिस्सा है, बस एक अलग फ़ाइल है, और आंतरिक को मिलान करने की जरूरत है। यहां तक ​​कि एक ही संस्करण के साथ, मैं स्थिर libc जोड़ने लगता है और गतिशील रूप से बहुत टूटा हुआ हो जाएगा libpthread।

यदि आपकी आवश्यकताओं के लिए ग्लिबैक बहुत बड़ा है, तो आप uClibc या musl जैसे वैकल्पिक libc को आजमा सकते हैं।

+0

लेकिन मैं lpthread गतिशील लिंक कर लिया है की जरूरत है। -स्टैटिक विकल्प सबकुछ स्थिर रूप से लिंक करेगा। – nkdm

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