2012-08-14 10 views
5

में लाइब्रेरी में फ़ंक्शन के अस्तित्व की जांच करना एक अजीब अपरिभाषित फ़ंक्शन संदर्भों को गतिशील जोड़ने के दौरान दिखाई देता है। मुझे पुस्तकालय का नाम पता है जिसमें यह कार्य होना चाहिए। क्या यह सुनिश्चित करने के लिए कोई लिनक्स कमांड है कि लाइब्रेरी (.a फ़ाइल) में फ़ंक्शन पहले से मौजूद है?लिनक्स

+2

'एनएम ' का प्रयास करें, यदि आपका प्रतीक 't' या' t' के साथ उपसर्ग है तो lib में यह है। – Rohan

+0

[autoconf] (http://www.gnu.org/software/autoconf/) यह ['AC_CHECK_LIB'] के साथ लाइब्रेरी उपलब्धता की जांच करते समय करता है (http://www.gnu.org/software/autoconf/manual /autoconf.html# पुस्तकालय) समारोह। –

उत्तर

9

लिए देख रहे हैं जानकारी के टुकड़े आप पुस्तकालय के अंदर जा रहा है सब कुछ की एक सूची प्राप्त करने के लिए उपयोग करने के लिए nm (--demangle पैरामीटर की आवश्यकता हो सकती) सक्षम होना चाहिए देना चाहिए है , तो परिणामों को फ़िल्टर करने के लिए grep का उपयोग करें, उदाहरण के लिए \d T functionname\( या ऐसा कुछ ढूंढें।

+0

लाइब्रेरी में फ़ंक्शन नाम टी के साथ उपसर्ग है। लेकिन फ़ंक्शन का नाम बिल्कुल वही नहीं है जो मैं अपेक्षा करता हूं। एनएम पाता है: '0000000000000310 टी _Z15lmp_init_deviceiiiiidii' जबकि मैं lmp_init_device की तलाश में हूं। लिंकिंग के दौरान उपसर्ग/प्रत्यय को अनदेखा किया जाएगा? – ahmad

+1

'--demangle' जोड़ें और इसे जोड़े गए वर्णों को हटा देना चाहिए (कारण सी के बजाय सी ++ होने के कारण)। – Mario

1

nm आदेश को एक नज़र जो आप आप