मैं लाइब्रेरी लोडिंग का पता कैसे लगाऊं?


16

मेरे पास प्रोग्राम है जो लाइब्रेरी पर निर्भर करता है जो कि libboost 1.67 से जुड़ा हुआ है, जो सिस्टम में स्थापित है। जब मैं इसे लॉन्च करता हूं, तो मेरे पास एक त्रुटि है जो libboost_system.so.1.58मौजूद नहीं है। LD_PRELOADऔर LD_LIBRARY_PATHपरेशान हैं।

lddtreeनिष्पादन इस लाइब्रेरी को निर्भरता के रूप में नहीं दिखाता है लेकिन lddकरता है।

लाइब्रेरी की आवश्यकता कहां से हो सकती है?

जवाबों:


16

यदि एक GNU सिस्टम पर, अपना एप्लिकेशन चलाने का प्रयास करें:

LD_DEBUG=libs your-application

LD_DEBUG=helpअधिक विकल्पों के लिए देखें या man ld.so


जब मैं LD_DEBUG की कोशिश करता हूं = tssh पर python3.6 का lib मुझे LD_DEBUG कमांड नहीं मिला। टीसीएस विकल्प क्या है?
गन्सब

1
@gansub envtcsh में कमांड के साथ उपसर्ग करें
स्टीफन चेज़लस

6

यदि प्रोग्राम dlopen () का उपयोग करते हुए libboost_system को मैन्युअल रूप से लोड कर रहा है, तो आप पा सकते हैं कि यह कहां कर रहा है कि ltrace का उपयोग करके यह देखने के लिए कि क्या यह dlopen () कॉल कर रहा है, और शायद ddopen () और फिर कॉल पर ब्रेकपॉइंट सेट करने के लिए gdb स्टैक बैकट्रेस जनरेट कर रहा है। ( अक्षांश भी देखें )

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.