2011-06-06 16 views

उत्तर

7

पुस्तकालयों को उनके द्वारा आवश्यक प्रतीकों के आधार पर मांग पर लोड किया जाता है, इसलिए लाइब्रेरी जो किसी अन्य चीज़ द्वारा आवश्यक प्रतीक प्रदान करती है, उसे कुछ और करना चाहिए। यह ऐतिहासिक है; तर्कसंगत रूप से एक आधुनिक प्रणाली को प्रतीकों को स्वचालित रूप से हल करना चाहिए, लूप को समझदारी से संभालना चाहिए (नियम के कारण होने के कारण, आपने क्रमशः पुस्तकालयों को क्रमशः निर्दिष्ट करने और आवश्यकतानुसार निर्भरता चक्रों को तोड़ दिया), लेकिन g++ पारंपरिक नियमों का पालन करता है, इसलिए यह काम करेगा विक्रेता ld एस। (जीएनयू ld हर जगह काम नहीं करता है, इसलिए प्रतीकात्मक निर्भरता लूप को हल करने के लिए इस पर भरोसा करना संभव नहीं होगा। जीएनयू ld काम करता है जहां प्लेटफॉर्म पर बूटस्ट्रैपिंग चिंताओं भी हैं।) इसी तरह, अन्य लिंकर उन्मुख विकल्प होना चाहिए उन चीजों के सापेक्ष सही क्रम में निर्दिष्ट (उदाहरण के लिए, -L विकल्प निर्दिष्ट लाइब्रेरी में रहने वाली लाइब्रेरी से पहले होना चाहिए; यह महत्वपूर्ण हो सकता है यदि एक निर्देशिका में लाइब्रेरी एक मानक निर्देशिका में एक ही नाम की लाइब्रेरी को छाया देती है)।

+0

बूटस्ट्रैपिंग चिंताओं? जैसे क्या? – Maxpm

+1

यदि जीएनयू 'एलडी' के लिए विशिष्ट व्यवहार पर' gcc'/'g ++' निर्भर है, तो आप जटिलताओं में शामिल होते हैं कि जीएनयू टूलचेन चलाने के क्रम में किस चीज को बनाया जाना चाहिए। बूटस्ट्रैपिंग उद्देश्यों के लिए मानक विक्रेता उपकरण के साथ निर्माण करने के लिए 'gcc' /' g ++ 'बड़ी लंबाई तक जाता है, क्योंकि कई जीएनयू प्रोग्राम 'gcc' एक्सटेंशन पर भरोसा करते हैं, और जीएनयू' एलडी '-विशिष्ट व्यवहार के आधार पर इसे तोड़ दिया जाएगा। – geekosaur

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