मेरे पास लिनक्स के लिए मेकफ़ाइल है जिसे मैं डार्विन पर भेज रहा हूं। मेकफ़ाइल .o फ़ाइलों का एक समूह लेता है और उन्हें एक साथ साझा किया जाता है। इसलिए साझा ऑब्जेक्ट। ठीक है, तो मैंने सोचा (क्या मैं इसके बारे में गलत हूं?) कि डार्विन में इसके लिए सबसे अच्छा एनालॉग डाइलिब है। तो मैंने -श्रेषित ध्वज को-गतिशीलता में बदल दिया।साझा लाइब्रेरी या डाइलिब में अपरिभाषित प्रतीकों के साथ सौदा क्या है?
अब कोड जो मैं डायलेब में एक साथ जोड़ रहा हूं, बाहरी पुस्तकालयों पर निर्भर करता है। जब मैं डाइलिब बनाने की कोशिश करता हूं, तो मुझे त्रुटियां मिलती हैं कि अपरिभाषित संदर्भ हैं। लेकिन लिनक्स मेकफ़ाइल किसी भी जो भी या -एल/पथ/निर्माण चरण में जो भी विकल्प बनाता है, वह निर्दिष्ट नहीं करता है .so फ़ाइल बनाता है। हम्म? ऐसा इसलिए है क्योंकि जब आप एक ईएलएफ .so फ़ाइल बनाते हैं, तो डिफ़ॉल्ट रूप से यह बाह्य संदर्भों को अनसुलझा करता है, और फिर साझा लाइब्रेरी लोड होने पर, रिकर्सिवली साझा लाइब्रेरी लोड करता है जो साझा की गई लाइब्रेरी द्वारा निर्भर हैं? क्या यह मामला नहीं होगा कि यदि साझा लाइब्रेरी एक .a या .o फ़ाइल पर निर्भर करती है, तो आपको उन्हें साझा लाइब्रेरी में स्थिर रूप से लिंक करना होगा, अन्यथा आप रनटाइम पर लिंक नहीं कर पाएंगे? रनटाइम पर लोड की गई लाइब्रेरी में अपरिभाषित संदर्भ होने से आप कैसे दूर हो सकते हैं, जब तक संदर्भ गतिशील रूप से लोड करने योग्य पुस्तकालयों तक न हों?
वैसे भी यदि ऐसा है तो मेरे द्वारा निर्दिष्ट
-undefined suppress -flat_namespace
यह जब शेयर की गई लाइब्रेरी बनाने उन -l और एल विकल्प जोड़ने के लिए मुझे आवश्यकता नहीं है। लेकिन मुझे अभी भी समझ में नहीं आता कि यह अंततः कैसे काम कर सकता है।
धन्यवाद, मुझे लगता है कि यह काम करेगा, लेकिन मुझे क्या हो रहा है इसके पीछे पृष्ठभूमि में दिलचस्पी है। – eeeeaaii
मैकोज़ काफी लिनक्स नहीं है। यह मूल रूप से नेक्स्टोस है, आखिरकार। लिंकर थोड़ा विलक्षण है। Libtol में जोड़ें -v और यह आपको बताएगा कि यह क्या कर रहा है। – bmargulies