Nm /lib/i386-linux-gnu/libc.so.6 के लिए कोई प्रतीक क्यों दिखाता है?


31

मुझे Printf सहित libc.so.6 फ़ाइल में प्रतीकों की संख्या देखने की उम्मीद थी । मैंने उन्हें खोजने के लिए एनएम उपकरण का उपयोग किया, हालांकि यह कहता है कि libc.so.6 में कोई प्रतीक नहीं है।

जवाबों:


54

यह शायद इसके नियमित प्रतीक छीन लिए गए हैं और जो बचा है वह इसके गतिशील प्रतीक हैं, जिन्हें आप प्राप्त कर सकते हैं nm -D


11

@PSkocik ने इसका जवाब दिया। मैं सिर्फ और अधिक विवरण जोड़ना चाहता हूं। ELF में दो प्रकार के प्रतीक खंड होते हैं: .symtabऔर .dynsym(विवरण के लिए लिनक्स मानक बेस कोर विशिष्टता, उर्फ ​​LSB_5.0.0 देखें)। .symtabसाझा देयता के लिंकिंग चरण के लिए है। एक बार लिंकिंग समाप्त हो जाने के बाद, .symtabअनुभाग की आवश्यकता नहीं है। इस .dynsymखंड में महत्वपूर्ण प्रतीक शामिल हैं जिन्हें गतिशील लिंकर द्वारा खोजा जाना चाहिए। nmडिफ़ॉल्ट रूप से केवल .symtabअनुभाग में प्रतीकों को डंप करता है ।

LSB_5.0.0 धारा 10.2.2.1, "ईएलएफ अनुभाग प्रकार", कहते हैं कि एक अनुरूप साझा देयता दोनों में से एक होनी चाहिए .symtabया .dynsymनहीं। ABI लाइब्रेरी के एक हिस्से के रूप में, एफबीआईसी को .symtabकल्पना के अनुरूप छीन लिया गया है ।


0

पता लगाएँ कि क्या यह एक साझा वस्तु है, या, एक नियमित ASCII फ़ाइल। यदि यह एक साझा वस्तु है, तो आपको "ईएलएफ 32-बिट एलएसबी साझा वस्तु" देखना चाहिए।

file /lib/i386-linux-gnu/libc.so.6

libc.so.6वस्तुतः एक साझा वस्तु है।
गिल्स एसओ- बुराई को रोकें

मैं लिनक्स वातावरण में कभी नहीं मानती। किसी को ध्यान में रखते हुए मूल निर्देशिकाओं को छुआ जा सकता था। हां, नाम से जाहिर तौर पर यह एक साझा वस्तु है। और, यह सत्यापित करने के लिए चोट नहीं करता है; जब आपको अपेक्षित आउटपुट नहीं मिल रहा हो।
jncc99
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.