2010-12-22 8 views
131

मैं लिनक्स पर साझा लाइब्रेरी के निर्यात किए गए कार्यों को देखना चाहता हूं।लिनक्स साझा लाइब्रेरी निर्यात करने वाले कार्यों की सूची को मैं कैसे देखूं?

मुझे कौन सा आदेश मुझे ऐसा करने की अनुमति देता है?

(विंडोज़ पर मैं उपयोग कार्यक्रम निर्भर करता है)

+0

एक समान प्रश्न: [मैं कैसे पता लगा सकता हूं कि किसी साझा ऑब्जेक्ट से सभी प्रतीकों को निर्यात किया जाता है?] (Http://stackoverflow.com/questions/1237575/how-do-i-find-out-what-all -सिमबोल-निर्यात-से-साझा-ऑब्जेक्ट-ऑब्जेक्ट) –

उत्तर

209

आपको क्या करना होगा nm और उसके -D विकल्प है:

$ nm -D /usr/lib/libopenal.so.1 
. 
. 
. 
00012ea0 T alcSetThreadContext 
000140f0 T alcSuspendContext 
     U atanf 
     U calloc 
. 
. 
. 

निर्यात sumbols एक T ने संकेत दिया जाता है। आवश्यक प्रतीकों को अन्य साझा वस्तुओं से लोड किया जाना चाहिए U है। ध्यान दें कि प्रतीक तालिका में केवल फ़ंक्शंस शामिल नहीं हैं, बल्कि निर्यात किए गए चर भी शामिल हैं।

अधिक जानकारी के लिए nmmanual page देखें।

+10

या यदि आप केवल निर्यात किए गए प्रतीकों को देखना चाहते हैं, तो "- परिभाषित-केवल" ध्वज जोड़ें। उदाहरण: "एनएम-डी - परिभाषित-केवल/lib/libtest.so" –

+6

'--डेमंगल ने मेरे लिए काम किया। – vmrob

+2

मैक ओएस एक्स पर '-D' ध्वज के बिना बस' एनएम 'का उपयोग करें। – JPaget

26

objdump -T *.so भी आप, nm *.o | c++filt उपयोग करने के लिए के रूप में वहाँ nm में कोई -C विकल्प है की जरूरत पर एक मैक

+6

@gotqn: आपको क्या लगता है कि यह कोई जवाब नहीं है? –

2

काम कर सकता है।

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