दिलचस्प पोस्ट
एनजी-बदलाव के लिए विलंब के लिए कोण निर्देश SQL सर्वर – INSERT के बाद मूल्य लौटें GitHub की तरह Git सर्वर? क्यों बिल्कुल eval बुराई है? एक्सचेंज साइट्स के समान एक्सएक्स जैसे "4 मिनट पहले" के समय का प्रारूप कैसे करें सरणी में अंतिम कुंजी कैसे प्राप्त करें? मैं एक लॉग 4 जे कॉन्फिग फाइल के साथ 2 अलग लॉग फाइल कैसे बना सकता हूं? सीएसएस मीडिया प्रश्न: अधिकतम-चौड़ाई या अधिकतम-ऊंचाई यूआरएल में, क्या रिक्त स्थान को% 20 या + का उपयोग करके एन्कोड किया जाना चाहिए? क्या node.js के लिए एक नौकरी अनुसूचक पुस्तकालय है? ट्विटर एपीआई त्रुटि 215 देता है, खराब प्रमाणीकरण डेटा शब्दकोश में एक कुंजी का नाम बदलें डीजेंगो में व्यावसायिक तर्क और डेटा एक्सेस का पृथक्करण केवल-पढ़ने योग्य गुण शुद्ध जावास्क्रिप्ट में लागू हो सकते हैं? कैसे आईफोन 5 (वाइडस्क्रीन डिवाइस) का पता लगा सकता है?

स्थिर पुस्तकालयों का मिश्रण करें

मैंने इस प्रश्न में दृष्टिकोण की कोशिश की, लेकिन ऐसा लगता है कि ar का लिनक्स संस्करण मैक संस्करण के समान नहीं है क्योंकि मैं ऑब्जेक्ट फ़ाइलों को फिर से संगठित करने में असफल रहा हूं।

मैं जो मूल रूप से करना चाहता हूं वह एक स्थैतिक लाइब्रेरी को एक रन-स्क्रिप्ट बिल्ड चरण के माध्यम से मेरी Xcode स्थैतिक पुस्तकालय बिल्ड उत्पाद में विलय कर रहा है।

दुर्भाग्य से मैं अन्य लाइब्रेरी को सीधे मेरी प्रोजेक्ट में संकलित नहीं कर सकता क्योंकि यह अपनी बिल्ड सिस्टम है (इसलिए मैं संकलित लिब्ज़ का उपयोग करता हूं)।

मुझे लगता है कि बिल्ड लायब्रेरी को डिकंपिलिंग के बिना अन्य लाइब्रेरी को ar माध्यम से एक्सकोड जनरेट किए गए लाइब्रेरी में मर्ज करना संभव है। मैं इसे कैसे पूर्ण करूं?

वेब के समाधान से एकत्रित समाधान "स्थिर पुस्तकालयों का मिश्रण करें"

आप इसे करने के लिए libtool का उपयोग कर सकते हैं

 libtool -static -o new.a old1.a old2.a 

यदि आप बहु-वास्तुकला स्थैतिक पुस्तकालयों के साथ काम कर रहे हैं, तो प्रत्येक लाइब्रेरी को पतला करने के लिए अतिरिक्त हेरफेर करने के लिए आवश्यक है, थिन संस्करणों को जोड़ना होगा, और फिर परिणाम को मोटा होना चाहिए। यहां एक आसान स्क्रिप्ट है जिसे आप अपनी संतुष्टि में संपादित कर सकते हैं जो कि एक में सब कुछ करता है। उदाहरण के लिए तीन आईओएस पुस्तकालय path/to/source/libs/libone.a , path/to/source/libs/libtwo.a , और path/to/source/libs/libthree.a और उन्हें एक पुस्तकालय में विलीन कर दिया जाता है। । libcombined.a

 #! /bin/bash INPATH="path/to/source/libs" LIBPREFIX="lib" LIBS="one two three" LIBEXT=".a" OUT="combined" ARCHS="armv7 armv7s arm64" for arch in $ARCHS do for lib in $LIBS do lipo -extract $arch $INPATH/$LIBPREFIX$lib$LIBEXT -o $LIBPREFIX$lib-$arch$LIBEXT done INLIBS=`eval echo $LIBPREFIX\{${LIBS// /,}\}-$arch$LIBEXT` libtool -static -o $LIBPREFIX$OUT-$arch$LIBEXT $INLIBS rm $INLIBS done OUTLIBS=`eval echo $LIBPREFIX$OUT-\{${ARCHS// /,}\}$LIBEXT` lipo -create $OUTLIBS -o $LIBPREFIX$OUT$LIBEXT rm $OUTLIBS 

आपको सिर्फ एक से दूसरे को जोड़ने में सक्षम होना चाहिए। इसलिए … सिर्फ छवियों को मर्ज करने के लिए ld का उपयोग करें।

MacOS पर एक संग्रह बनाने के लिए आपको ar -r का उपयोग करना चाहिए:

 ar -x libabc.a ar -x libxyz.a ar -r libaz.a *.o