2012-10-26 5 views
13

कई मैच-ओ लिंकर त्रुटि से थकने के बाद, मैं जानना चाहता हूं कि इस बात का मतलब है। परीक्षण और त्रुटि समाधान के बजाय, मैं इन चीजों के पीछे अवधारणा को जानना चाहता हूं। विशेष रूप से मैं के बीच का अंतर जानना चाहता हूँ:एक्सकोड परियोजना लक्ष्य निर्माण सेटिंग्स में, मैक-ओ टाइप क्या है?

  1. निष्पादन
  2. गतिशील लाइब्रेरी
  3. बंडल
  4. स्टेटिक लाइब्रेरी
  5. पुनर्निधारणीय वस्तु फ़ाइल

ये विकल्प प्रस्तुत कर रहे हैं जब मैं क्लिक करें लिंकिंग सेक्शन पर मैक-ओ टाइप सेटिंग्स पर। कुछ छोटी परिभाषा या उचित सामग्री के लिए कुछ लिंक भी ठीक है।

+3

https: // developer.apple.com/library/mac/#documentation/developertools/conceptual/MachOTopics/1-Articles/building_files।एचटीएमएल – iDev

उत्तर

22

Mach-O, मैक ऑब्जेक्ट फ़ाइल प्रारूप के लिए छोटा, निष्पादन योग्य, ऑब्जेक्ट कोड, साझा पुस्तकालय, गतिशील रूप से लोड कोड और कोर डंप के लिए एक फ़ाइल प्रारूप है। यूनिक्स उपयोगकर्ताओं के लिए यह a.out जैसा है लेकिन सुधार के साथ। यह निष्पादन योग्य फ़ाइलों के लिए मैक ओएस एक्स और आईफोन ओएस पुस्तकालयों में प्रयुक्त प्रारूप है।

जैसा कि आप जानते हैं कि आईओएस डिवाइस (आईफोन, आईपैड इत्यादि) में विभिन्न आर्किटेक्चर एआरएमवी 6 (आईफोन 2 जी + 3 जी, आईपॉड टच) और एआरएमवी 7 (आईफोन 3 जीएस, आईपॉड टच 2 जी + 3 जी) हैं लेकिन एक्सकोड में इस्तेमाल किए गए सिमुलेटर ज्यादातर चलते हैं i386 मंच। इसका मतलब है कि लाइब्रेरी क्लाइंट को सिम्युलेटर और डिवाइस के लिए अलग-अलग लक्ष्य सेट करना होगा। अलग-अलग लक्ष्य अधिकांश जानकारी डुप्लिकेट करते हैं, और केवल स्थिर पुस्तकालयों में भिन्न होते हैं। तो यदि आपको मैक-ओ लिंकर त्रुटि मिल रही है तो इसका अर्थ यह है कि एक्सकोड को उस लक्ष्य डिवाइस के लिए पुस्तकालयों में से किसी एक को जोड़ने में समस्या हो रही है; जिसके परिणामस्वरूप संकलन विफल रहता है।

अब आप अपने परिभाषाएं -

  1. निष्पादन - संकलित मशीन लक्षित कार्यक्रम तैयार द्विपदीय प्रारूप में चलाने के लिए।
  2. गतिशील लाइब्रेरी - रनटाइम के दौरान जुड़े हुए हैं - गतिशील लाइब्रेरी के संदर्भ वाले एक प्रोग्राम को लोड होने पर लाइब्रेरी के साथ लोड और लिंक होगा (या मांग पर)।
  3. बंडल - और बंडल पहचानकर्ता आईओएस और ओएसएक्स को आपके ऐप के किसी भी अपडेट को पहचानने दें। यह ऐप में एक अद्वितीय उपस्थिति देता है।
  4. स्टेटिक लाइब्रेरी - फाइलें बिल्ड समय पर जुड़ी हुई हैं। निष्पादन योग्य में कोड कॉपी किया गया है। लाइब्रेरी में कोड जिसे आपके प्रोग्राम द्वारा संदर्भित नहीं किया गया है हटा दिया गया है। केवल स्थिर पुस्तकालयों वाले एक कार्यक्रम में रनटाइम के दौरान कोई निर्भरता नहीं होती है।
  5. स्थानापन्न ऑब्जेक्ट फ़ाइल - एक गतिशील पुस्तकालय के लिए एक और शब्द है। जब आप गतिशील लाइब्रेरी से लिंक करते हैं, तो लाइब्रेरी को मेमोरी में लोड किया जाता है, इस पर आधारित फ़ंक्शन के पते की गणना की जाती है। वे "स्थानांतरित करने योग्य" हैं क्योंकि निहित कार्यों के पते लिंक समय पर निर्धारित नहीं हैं। अधिक जानकारी के Building Mach-O Files और Xcode Build Setting Reference के लिए (एक स्थिर पुस्तकालय में, पतों लिंक समय के दौरान गणना की जाती है।)
+0

मैं एक समान विषय पर आपकी सलाह लेता हूं और नहीं जानता कि आपको कैसे पहुंचाया जाए। मैं खुशी से आपके अनुरोध पर एक प्रश्न पोस्ट करूंगा। – Patricia

+0

क्या आप वाकई "रिलायटेबल ऑब्जेक्ट फ़ाइल" गतिशील पुस्तकालय के लिए एक और शब्द हैं? AFAIK, यह ऑब्जेक्ट फ़ाइल है (जो उपयोग किए जाने पर स्थिर रूप से जुड़ा हुआ है - इसलिए यह स्थैतिक स्थैतिक पुस्तकालय का एक और रूप है)। जबकि स्थैतिक पुस्तकालयों में कई ऑब्जेक्ट होते हैं, फिर भी स्थानांतरित करने योग्य ऑब्जेक्ट फ़ाइल एक ही ऑब्जेक्ट होती है। – Krypton

+0

मुझे लगता है कि यह ईएलएफ स्थानापन्न ऑब्जेक्ट फ़ाइल जैसा नहीं है। क्या कोई दोबारा जांच कर सकता है? – Krypton

6

प्रति सेब प्रलेखन के रूप में,

Mach-O Type Definition

चेक इस

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