2010-09-02 16 views
9

मुझे लिनक्स पर सी का उपयोग करके विकसित लाइब्रेरी के लिए कोड आकार खोजने की आवश्यकता है। मैंने इस पुस्तकालय का उपयोग करने वाले नमूना अनुप्रयोग के विरुद्ध जीसीसी लिंकर विकल्पों का उपयोग करके मानचित्र फ़ाइल जेनरेट की है।जीसीसी मानचित्र फ़ाइल की व्याख्या

मानचित्र फ़ाइल काफी संपूर्ण है। मैं मानचित्र फ़ाइल से लाइब्रेरी का कोड आकार कैसे प्राप्त करूं? मानचित्र फ़ाइल की व्याख्या करने के तरीके पर किसी भी दस्तावेज के लिए कोई संकेतक भी बहुत उपयोगी होगा।

+1

ठीक है, मैं कोड आकार को खोजने के लिए एक और रास्ता पता चला जो मैं सोचा कि मुझे आपके साथ साझा करना चाहिए। आदेश 'आकार' है। http://www.cyberciti.biz/faq/linux-find-size-of-text-data-segment-bss-uninitialized-data/ – sthustfo

उत्तर

8

आप किसी दिए गए साझा ऑब्जेक्ट में मशीन निर्देशों का आकार ढूंढना चाहते हैं? आपको मानचित्र फ़ाइल की आवश्यकता क्यों है?

यह .text अनुभाग का आकार देता है। .text अनुभाग जहां निष्पादन योग्य कोड संग्रहीत किया जाता है है:

 
$ objdump -x /usr/bin/objdump | grep .text 
13 .text   0002c218 0000000000403320 0000000000403320 00003320 2**4 

इस उदाहरण में, वहाँ निष्पादन योग्य पाठ के 2c218 बाइट्स हैं। दशमलव में यह लगभग 180 KiB है:

 
$ printf %d\\n 0x2c218 
180760 

संपादित करें: यह है कि यह कैसे एक पुस्तकालय के साथ की तरह लग रहा है:

 
$ objdump -x /usr/lib/libcairo.so | grep .text 
11 .text   00054c18 000000000000cc80 000000000000cc80 0000cc80 2**4 
$ printf %d\\n 0x54c18 
347160 
+0

धन्यवाद - आप यहाँ उपयोग के बारे में और अधिक पढ़ सकते हैं। एक बिक्री व्यक्ति लाइब्रेरी का कोड आकार चाहता था ताकि वह उसे ग्राहक से संवाद कर सके। अगर मैं के रूप में आप नमूना निष्पादन के खिलाफ सुझाव दिया है objdump चलाने के लिए, तो यह पुस्तकालय के पाठ के आकार के साथ ही नमूना आवेदन देता है। क्या पुस्तकालय के पाठ आकार को पाने का कोई तरीका है? – sthustfo

+0

आह, क्षमा करें। निष्पादन योग्य के खिलाफ दौड़ने के बजाय, आपको इसे पुस्तकालय के खिलाफ प्रश्न में चलाना चाहिए। मैंने आउटपुट के लिए एक (खराब) उदाहरण के रूप में बस/usr/bin/objdump का उपयोग किया। –

+2

सवाल एक ** बिक्री से आया है तो ** व्यक्ति, आप निश्चित रूप से '.data' .bss' वर्गों भी (प्रारंभ और unitialized डेटा) जोड़ना चाहिए और', जिसका अर्थ है आकार सिर्फ .a अगर की फ़ाइल आकार है छीन लिया। गूंगा खेलें, ग्राहकों को आमतौर पर अकेले .text अनुभाग की परवाह नहीं है, डेटा अंतर बनाता है। – rurban

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