मान लीजिए मैं:जीसीसी एक साझा वस्तु की लिंकर नाम को जोड़ने
- मशीन एक पर
/usr/lib/libsomething.so.1
; /usr/lib/libsomething.so.2
मशीन बी
पर दोनों मशीनों उनके संबंधित libs को /usr/lib/libsomething.so
symlinking है।
libsomething.so.1 => /usr/lib/libsomething.so.1
इसका मतलब यह है कि यह पुस्तकालय को खोजने के लिए सक्षम नहीं होगा:
मशीन एक परअगर मैं -lsomething
(या यहां तक /usr/lib/libsomething.so
) के साथ gcc
का उपयोग कर लिंक यह सिमलिंक का पालन करेंगे, और ldd
की तरह कुछ का उत्पादन मशीन बी
अब मुझे पता है कि ये प्रमुख संस्करण संख्या में परिवर्तन हैं और मुझे पता है कि वे संगत नहीं हो सकते हैं, लेकिन मैं उस जोखिम को लेने के लिए तैयार हूं। क्या मैं लिंकर बताना चाहूँगा libsomething.so
देखने के लिए, और सिमलिंक का पालन नहीं करते तो ldd
libsomething.so => /usr/lib/libsomething.so.1
एक पर
लेकिन
libsomething.so => /usr/lib/libsomething.so.2
बी पर
और फिर लोडर दिखाएगा सिमलिंक का पालन करेगा जो भी संस्करण है।
इसके अलावा, मैं डलोपेन या कुछ भी लोड करने में देरी नहीं करना चाहता हूं। मैं इसे संकलित समय पर साझा ऑब्जेक्ट से लिंक करना चाहता हूं।
क्या यह भी संभव है?
मैं पुस्तकालय का निर्माण नहीं कर रहा था, मुझे लगता है कि असली जवाब सिर्फ मैंने जो सुझाव दिया है, वह नहीं करना है, और यदि आप वास्तव में धोखा देना चाहते हैं, तो सिम्लिंक का उपयोग करें। इसने कुछ अच्छी जानकारी प्रदान की हालांकि मैं स्वीकार कर रहा हूं। –