फ़ाइल सार्वभौमिक है (तीन स्लाइस), लेकिन इसमें iOS पर स्थिर पुस्तकालयों के लिए एक (n) ARMv7-s स्लाइस त्रुटि नहीं है, वैसे भी बाईपास करने के लिए?


403

मैंने Xcode वर्जन को अपग्रेड किया और बाहरी स्टैटिक लाइब्रेरीज़ का उपयोग करते समय, मुझे यह संदेश मिला:

ld: फ़ाइल सार्वभौमिक है (3 स्लाइस), लेकिन इसमें (n) आर्मव 7 एस स्लाइस नहीं है: / आर्किटेक्चर आर्मव 7 एस क्लैंग के लिए फाइल / स्थान: त्रुटि: लिंकर कमांड एक्ज़िट कोड 1 के साथ विफल रहा (उपयोग -v इनवोकेशन देखने के लिए

क्या इसको बायपास करने और लाइब्रेरी में समर्थन जोड़ने का कोई तरीका है अगर लाइब्रेरी के डेवलपर ने अभी तक अपनी लाइब्रेरी को अपडेट नहीं किया है?


- यह अब के लिए एक अच्छा समाधान लगता है galloway.me.uk/2012/09/hacking-up-an-armv7s-library
Rajavanya Subramaniyan

जवाबों:


418

यदि आप किसी आर्किटेक्चर के लिए समर्थन हटाना चाहते हैं, उदाहरण के लिए, ARMv7-s आपके मामले में, मेनू प्रोजेक्ट का उपयोग करें - सेटिंग्स बनाएँ -> आर्किटेक्चर को "मान्य आर्किटेक्चर" से हटा दें।

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

वैकल्पिक रूप से, आप अपने डिबग कॉन्फ़िगरेशन के "हां में सक्रिय आर्किटेक्चर केवल बनाएं" के लिए ध्वज सेट कर सकते हैं। रिलीज़ कॉन्फ़िगरेशन को "केवल सक्रिय आर्किटेक्चर बनाएँ" को छोड़ दें नहीं, बस इसलिए आपको रिलीज़ करने से पहले एक रिमाइंडर मिलेगा जिसे आप उपयोग कर रहे किसी भी तृतीय-पक्ष लाइब्रेरी को अपग्रेड करना चाहते हैं।


11
आपको लाइब्रेरी को फिर से नहीं बनाना है। आप लाइब्रेरी का उपयोग कर रहे प्रोजेक्ट से इस ध्वज को निकाल सकते हैं।
निकोलस

4
यह काम करेगा, क्योंकि पुराने ऐप्स जिन्हें armv7s समर्थन के साथ संकलित नहीं किया गया है, उन्हें भी चलाना होगा। लेकिन आप कुछ विशिष्ट अनुकूलन करेंगे। यह वैसे भी एक अस्थायी समाधान होना चाहिए।
निकोलस

2
ड्रॉपबॉक्स ढांचे को इस मुद्दे के लिए अद्यतन किया गया है देखें फ़ोरम .ropbox.com
topic.php

6
मान्य आर्किटेक्चर सूची से armv7s को हटाना मेरे लिए काम करता है, लेकिन इसलिए इसे आर्किटेक्चर से हटा दिया गया। हालांकि, दोनों ही मामलों में, मुझे No architectures to compile for (ARCHS=i386, VALID_ARCHS=armv7).लिंकर से मिलेगा जिसे मैं केवल i386वैलिड आर्किटेक्चर सूची में जोड़कर हल कर सकता हूं ।
लेविग्रोकर

6
नहीं, armv7s A6 प्रोसेसर का इंस्ट्रक्शन सेट है जिसका उपयोग iPhone 5 में किया जा रहा है। चूंकि A6 पीछे की ओर संगत है, यह अभी भी armv7 इंस्ट्रक्शन सेट को चलाएगा।
निकोलस

191

मैंने टारगेट की बिल्ड सेटिंग्स में "बिल्ड एक्टिव आर्किटेक्चर ओनली" टू "यस" लिखा है, और यह अब ठीक है!


1
@ Blasco73 क्या आप भी जानते हैं कि आप भयानक हैं? तुम्हे करना चाहिए। यहाँ जाता है, यू सर, कमाल हैं!
thandasoru

15
यह एक अच्छा समाधान कैसे हो सकता है। यह त्रुटि को दूर करता है, लेकिन आप केवल वर्तमान मेहराब के लिए निर्माण करते हैं, न कि सभी बाजार पर ...
esbenr

27

IOS 5.1 फोन के लिए इस मुद्दे से रिलीज करने के लिए प्रोजेक्ट के "मान्य आर्किटेक्चर" से armv7s को हटाने का प्रयास करें


13

मैं सिर्फ एक ठीक तैनात यहाँ वह भी इस मामले में लागू होगा - मूल रूप से, आप एक हेक्स अपने बाहरी पुस्तकालय बनाने के लिए खोज एवं प्रतिस्थापन कर यह लगता है कि यह के ARMv7s कोड। आप lipoइसे 3 स्थिर पुस्तकालयों में तोड़ने के लिए उपयोग करने में सक्षम होना चाहिए , ARMv7 एक को डुप्लिकेट / संशोधित करें, फिर lipoसभी 4 आर्किटेक्चर के लिए एक नई लाइब्रेरी को इकट्ठा करने के लिए फिर से उपयोग करें।


5

IPhone 5 के लिए घबराहट समर्थन (ARMv7s) जैसा कि मैंने कल की पोस्ट में उल्लेख किया था, Flurry ने बुधवार को घोषणा के तुरंत बाद नए iPhone 5 में ARMv7s प्रोसेसर का समर्थन करने के लिए iOS SDK के एक संस्करण पर काम करना शुरू कर दिया।

मुझे यह बताते हुए खुशी हो रही है कि काम पूरा हो गया है और एसडीके अब साइट पर उपलब्ध है।


4

मेनू प्रोजेक्ट का उपयोग करें -> सेटिंग बनाएँ ->

फिर "मान्य आर्किटेक्चर" से armv7s निकालें। यदि मानक चुना गया है, तो उसे हटा दें और फिर armv7 जोड़ें।


1

मामले में यह किसी के साथ होता है। मैंने तीसरे पक्ष के कोड के साथ उपयोग करने के लिए अपना स्वयं का पुस्तकालय बनाया। जब मैं इसे वितरित करने के लिए निर्माण कर रहा था, तो मैंने गलती से अपने iPhone 4S को प्लग इन कर दिया, और इसलिए Xcode ने प्रोजेक्ट सेटिंग्स का पालन करने के बजाय केवल प्लग-इन आर्किटेक्चर के लिए मेरी लाइब्रेरी बनाई। उपकरणों में किसी भी प्लग को हटा दें और लाइब्रेरी को फिर से बनाएं, इसे लिंक करें, और आपको सब ठीक होना चाहिए।

आशा है ये मदद करेगा।


0

मेरे मामले में, मैं एक थर्ड-पार्टी लाइब्रेरी को लिंक कर रहा था जो थोड़ी पुरानी थी (XCode 5 / iOS 7 पर iOS 6 के लिए विकसित)। इसलिए, मुझे थर्ड-पार्टी लाइब्रेरी को अपडेट करना था, क्लीन एंड बिल्ड करना था, और अब यह सफलतापूर्वक बन जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.