पर लोड साझा लाइब्रेरी देरी मैं किसी साझा लाइब्रेरी बनाने के लिए एक तरह से खोज कर रहा है बनाने के लिए देरी लिनक्स पर लोड (के पुस्तकालय " libbar.so" नाम है) और यह उम्मीद है कि एहसास होना चाहिए से केवल एक लिंकर की मदद से, सी ++ में लिखे गए स्रोत कोड पर कुछ भी संशोधित नहीं किया गया; मेरा मतलब है मैं dlopen आह्वान करने के लिए नहीं करना चाहते हैं() है और न ही dlsym() माता पिता पुस्तकालय के स्रोत कोड में libbar.so के एक समारोह को लागू करने (इसे " libfoo.so" नाम हैं) क्योंकि वे स्रोत कोड गन्दा बनाते हैं और रखरखाव प्रक्रिया मुश्किल होती है।कैसे लिनक्स
वैसे भी, मैं अब तक इंटरनेट पर अपने प्रश्न से संबंधित कुछ अनिश्चित जानकारी टुकड़े मिल गया है (संक्षेप में, मैं दृश्य स्टूडियो के /DELAYLOAD भी लिनक्स पर विकल्प के समान रास्ते पर जाने के लिए उम्मीद कर रहा हूँ), तो सूचना को स्पष्ट करने के लिए निम्नलिखित प्रश्नों के लिए आप सभी के जवाबों को बहुत अच्छा लगेगा।
- जीएनयू ld समर्थन लिनक्स पर किसी देरी लोड हो रहा है तंत्र करता है?
- यदि यह नहीं है, तो क्लैंग के बारे में कैसे?
- dlopen() परिवार लिनक्स पर साझा लाइब्रेरी विलंब को लोड करने का एकमात्र तरीका है?
मैं जीसीसी (छ ++) पुस्तकालय के लिए एक पथ के साथ करने के लिए -zlazy ध्वज पारित करने के लिए परीक्षण किया है, यह ध्वज स्वीकार करने के लिए लग रहा था, लेकिन व्यवहार देरी लोड libbar.so बनाने मुड़कर नहीं देखा (के न होने का libbar.so, मुझे libbar.so की पहली कॉल में अपवाद होने की उम्मीद थी, लेकिन वास्तव में libfoo.so में प्रवेश करने से पहले अपवाद उठाया गया था)। दूसरी तरफ, क्लैंग (क्लैंग ++) ने एक चेतावनी छोड़ी कि उसने विकल्प ध्वज को नजरअंदाज कर दिया।
सादर,
बजना जोड़ने के लिए जीएनयू ld का उपयोग करता है (कम से कम 3.4 के लिए और पुराने) ऐसा है, आपको वहां कोई मदद नहीं मिलेगी। –
@ मैट्स, आपकी टिप्पणी के लिए धन्यवाद। ठीक है, मैं इस सवाल पर क्लैंग को कभी भी याद नहीं रखूंगा और बाद में मूल विवरण संपादित करूंगा। – Doofah
पहले पूछा गया था: http://stackoverflow.com/questions/2957292/delay-load-equivalent-in-unix-based-systems – oakad