दिलचस्प पोस्ट
सरणी में स्ट्रिंग कैसे डालनी है, नई लाइन से विभाजित? आयात और निर्यात एक्सेल – सर्वश्रेष्ठ पुस्तकालय क्या है? प्रोटोटाइप का प्रयोग करके पाठ संदेश को स्वचालित करना आर.सी. 1 में बाइंडिंग सिंटैक्स का उपयोग करके कुछ शैलियों को जोड़ा नहीं जा सकता है कैसे एक बूटस्ट्रैपमोडल से $ _GET चर को एक लिंक से पास करें? ActiveMQ या RabbitMQ या ZeroMQ या सी ++ में पॉइंटर्स के लिए बहुआयामी arrays को परिवर्तित करना Sass के साथ अंत में अभिभावक चयनकर्ता को जोड़ना वस्तु गुणों की तुलना सी # में फ़ंक्शन संकेतक के माध्यम से C ++ क्लास विधियों को कॉल करना मेरे टंकिनर विगेट्स को कोई भी क्यों नहीं मिला? प्रोटोकॉल स्वयं के अनुरूप नहीं है? jQuery के साथ इनपुट फ़ील्ड का परिवर्तन प्रकार स्मृति से बाहर Image.FromFile क्या आप डॉकर कंटेनर में जीयूआई एप्लिकेशन चला सकते हैं?

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

मैंने इस प्रश्न में दृष्टिकोण की कोशिश की, लेकिन ऐसा लगता है कि 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