डायनामिक लाइब्रेरी से निर्यात किए गए प्रतीकों की सूची कैसे प्रिंट करें


121

इसलिए मैं मैक ओएस एक्स के तहत अपने XCode प्रोजेक्ट में काम करने के लिए गतिशील पुस्तकालयों को प्राप्त करने की कोशिश कर रहा हूं। अब तक कोई खुशी नहीं है।

मैं dylib फ़ाइल को लोड करने में सक्षम हूं, लेकिन जब मैं फ़ंक्शन पॉइंटर प्राप्त करने के लिए dlsym कहता हूं, तो यह 0 देता है और dlerror कहता है कि प्रतीक नहीं मिला।

इसलिए मैं सोच रहा हूं कि क्या उन प्रतीकों को सूचीबद्ध करने का एक सरल तरीका है जो एक dylib फ़ाइल से निर्यात किया जाता है। सभी विचारों का स्वागत है।

जवाबों:


152

आदमी 1 एनएम

https://web.archive.org/web/20160316222941/https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/nm.1.html

उदाहरण के लिए:

nm -gU /usr/local/Cellar/cairo/1.12.16/lib/cairo/libcairo-trace.0.dylib

2
ओएस एक्स तेंदुए के तहत (10.5, हाँ, मुझे पता है ...) आपको उपयोग करना चाहिए nm -gu, अर्थात -uविकल्प लोअरकेस है।
लैरीक्स डेसीडुआ

4
आदमी 1 एनएम स्व-निहित है और कमांड लाइन में परिवर्तन होने पर काम करना जारी रखेगा: पी
एमके।

9
@MK। man 1 nmबहुत सी चीजों को सूचीबद्ध करता है जो nm के साथ कर सकते हैं। फिर से, यह एक बाहरी संसाधन है जो किसी समाधान की खोज करने के लिए पढ़ सकता है, लेकिन अनुरोध करने के लिए समाधान नहीं है "एक dylib फ़ाइल से निर्यात किए गए प्रतीकों को सूचीबद्ध करने का एक सरल तरीका" । " nm -gU ….dylib" हालांकि, है।
स्लिप डी। थॉम्पसन

59

ओटूल का उपयोग करें :

otool -TV your.dylib

या

nm -g your.dylib

4
नए macOS पर, ओटूल-टी का otool: -T functionality obsoleteउपयोग objdump -t
joseph.smeng

हालांकि यह सच है कि नए OS X में otool -Tरिपोर्ट functionality obsoleteहै, यह भी सच है कि (गतिशील पुस्तकालयों के लिए) objdump -tरिपोर्ट करेगाThe file was not recognized as a valid object file.
TML


0

Dylib में सभी प्रतीकों को देखने के लिए Mach-OView का उपयोग करें

https://sourceforge.net/projects/machoview/


मैं इस GUI के बारे में जानने के लिए उत्साहित था, लेकिन मैंने एक dylib को लोड करने के बाद यह मेरे लिए क्रैश कर दिया। मैं macOS Mojave का उपयोग कर रहा हूं।
क्रिसडिम्बिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.