2012-12-06 12 views
13

एक उद्देश्य-सी स्थिर पुस्तकालय बनाने में, मैंने देखा कि .a फ़ाइल (सिम्युलेटर और आईफोन से वसा फ़ाइल) काफी बड़ी है। विशेष रूप से, यह मूल रूप से 5.7 एमबी था। मुझे this post मिला और मेरी बिल्ड सेटिंग्स Generate Debug Symbols को सेट करने के लिए सेट करें, lib आकार को 1.7 एमबी तक घटाएं।उद्देश्य-सी में स्थिर पुस्तकालयों के आकार को कम करने के लिए सर्वोत्तम प्रथाएं क्या हैं?

यह एक बड़ा सुधार था, लेकिन क्या कुछ और किया जा सकता है? कार्यान्वयन और हेडर फाइलें अकेले ~ 100kb लेती हैं।

उत्तर

16

यदि यह आपकी चिंता का हिस्सा है, तो एक स्थिर पुस्तकालय केवल प्रासंगिक है। फाइलें एक साथ संग्रहित की गई हैं और कुछ बहीखाता भी है। तो एक 1.7 एमबी स्थैतिक पुस्तकालय - भले ही उसके भीतर का कोड संपूर्ण 1.7 एमबी है - आमतौर पर आपके उत्पाद में 1.7 एमबी नहीं जोड़ देगा। मृत कोड अलग करने के बारे में सामान्य नियम लागू होंगे।

इससे परे कि आप अपने कोड के निर्मित आकार को कम कर सकते हैं। निम्नलिखित शायद एक व्यापक सूची नहीं है।

अपने लक्ष्य की बिल्ड सेटिंग्स में 'अनुकूलन स्तर' की तलाश करें। इसे 'सबसे तेज़, सबसे छोटा-ओ' पर स्विच करके आप संकलक को आकार के लिए कुछ गति बलिदान करने की अनुमति देंगे।

सुनिश्चित करें कि आप अंगूठे के लिए निर्माण कर रहे हैं, अधिक कॉम्पैक्ट एआरएम कोड। मान लें कि आप एलएलवीएम का उपयोग कर रहे हैं जिसका मतलब है कि आपके पास अपनी परियोजना सेटिंग्स में कहीं भी -mno-thumb नहीं है।

यह भी विचार करें कि आप किस आर्किटेक्चर के लिए निर्माण करना चाहते हैं। ऐप्पल एआरएमवी 6 और आईफोन 5 स्क्रीन दोनों का समर्थन करने वाले ऐप को प्रस्तुत करने की अनुमति नहीं देता है और नवीनतम एक्सकोड से पूरी तरह से एआरएमवी 6 समर्थन छोड़ देता है। तो इस बिंदु पर शायद कोई बिंदु नहीं है।

+0

+1 यह इंगित करने के लिए कि एक लाइब्रेरी का आकार बिल्कुल बाइनरी आकार में नहीं जोड़ा जाएगा क्योंकि लिंकर आमतौर पर बड़े समय को अनुकूलित करेगा। – Till

+0

धन्यवाद, @ टॉमी। इससे चीजें बहुत साफ हो जाती हैं – johngraham

+0

@ टॉमी क्या हुआ यदि उपयोगकर्ता निर्दिष्ट -all_load या -force_load निर्दिष्ट करता है? – klefevre

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

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