2015-05-21 5 views
5

निष्पादन योग्य के rpath रनटाइम पर साझा ऑब्जेक्ट्स को देखने के लिए एक या अधिक निर्देशिका निर्दिष्ट करता है।किसी साझा ऑब्जेक्ट फ़ाइल का rpath

मेरा प्रश्न है - साझा ऑब्जेक्ट फाइलें स्वयं भी स्थिर रूप से संकलित rpath एस है? - mylib.so, एक स्थिर संकलित rpath है

./example: /opt/swt/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./mylib.so) 

यह त्रुटि मेरे लिए इंगित करता है वास्तव में पुस्तकालय ही है कि:

जब एक साझा उद्देश्य के साथ जोड़ने मैं हाल ही में एक रनटाइम त्रुटि प्राप्त किया।

मेरी समझ यह थी कि rpath केवल एक्जिक्यूटिव पर लागू नहीं है, साझा वस्तुओं को नहीं। तो rpathभी साझा वस्तुओं पर लागू होता है?

उत्तर

3

कर साझा वस्तु खुद को फाइलें भी स्थिर-संकलित किया है rpaths

वे हो सकता है (या नहीं कर सकते हैं) है कि क्या वे -Wl,-rpath=... विकल्प के साथ जुड़े हुए थे पर निर्भर करता है।

यह त्रुटि मेरे लिए इंगित करता है वास्तव में पुस्तकालय ही है कि - mylib.so, एक स्थिर संकलित rpath है।

त्रुटि संदेश बिल्कुल नहीं कहता है। आपको यह विचार कहाँ से मिला?

आप को पता है mylib.soDT_RPATH है या नहीं चाहते हैं, तो ऐसा करते हैं:

readelf -d mylib.so | grep 'R.*PATH' # could also have RUNPATH 

मेरे समझ के साथ कि rpath केवल निष्पादनयोग्य, नहीं साझा वस्तुओं पर लागू किया गया था। तो क्या rpath साझा वस्तुओं पर भी लागू होता है?

आपकी समझ गलत है, और RPATH (और RUNPATH) साझा वस्तुओं के लिए भी काम करता है।

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