2008-12-07 16 views
16

के लिए स्थिर लाइब्रेरी बनाना एक ओपन सोर्स लाइब्रेरी है जिसे मैं अपने आईफोन ऐप के लिए उपयोग करना चाहता हूं। पुस्तकालय सी में लिखा गया है और मेकफ़ाइल के साथ संकलित करता है। मैं एक स्थिर पुस्तकालय का उपयोग करना चाहता हूँ।आईफोन

यदि मैं अपनी परियोजना निर्भरताओं में .a फ़ाइल जोड़ता हूं, तो यह सिम्युलेटर के साथ अच्छी तरह से काम करता है, लेकिन यह आईफोन एसडीके को लक्षित करते समय लिंक नहीं करता है (निश्चित रूप से क्योंकि .a फ़ाइल इंटेल प्लेटफ़ॉर्म के लिए संकलित की जाती है)।

आईफोन एसडीके के लिए एक स्थिर पुस्तकालय संकलित करने के लिए मुझे क्या जीसीसी कंपाइलर झंडे का उपयोग करना चाहिए? मैंने सोचा कि '-arch' विकल्प मुझे एक आईफोन आर्किटेक्चर प्रदान करेगा, लेकिन कोई किस्मत नहीं।

किसी भी मदद की सराहना की जाएगी।

उत्तर

3

अपने जीसीसी आवेदन के रूप में आर्म-सेब-डार्विन-जीसीसी के साथ संकलन करने का प्रयास करें। फिर आप 2 स्थैतिक पुस्तकालयों (हाथ और 386) को एक साथ मर्ज करने के लिए लिपो का उपयोग कर सकते हैं ताकि सिम बनाम डिवाइस पर विकास निर्बाध हो।

+0

जानकारी के लिए धन्यवाद। मैं अभी भी पुस्तकालय को आर्क-सेब-डार्विन-जीसीसी के साथ संकलित करने की कोशिश कर रहा हूं ... –

1

here प्रदान की गई युक्तियों के साथ हाथ जीसीसी कंपाइलर का उपयोग करने के कई प्रयासों के बाद, मैंने छोड़ दिया। मेरे मामले में, आईफोन के लिए एक स्थिर पुस्तकालय संकलित करने की कोशिश करने से पुस्तकालय को एक्सकोड में बस पोर्ट करना बहुत आसान है।

6

autoconf आधारित पुस्तकालय के लिए, मैं क्रिस्टोफर Stawarz के निर्माण स्क्रिप्ट के लिए मतदान होगा:

http://pseudogreen.org/blog/build_autoconfed_libs_for_iphone.html

इस स्क्रिप्ट के साथ

, आप एक आदेश के साथ पूरी प्रक्रिया को स्वचालित कर सकते हैं और आसानी से विभिन्न के लिए पुस्तकालय binaries के साथ आते हैं प्लेटफॉर्म, जैसे कि आईफोनओएस 2.0/2.1/2.2/2.2.1 और आईफोन सिम्युलेटर 2.0/2.1/2.2/2.2.1।

हालांकि, the change of Xcode 3.1 के कारण, $ (SDKROOT) निर्माण सेटिंग "macosx10.5", "iphoneos2.2.1" या "iphonesimulator2.2.1" जैसे कुछ छोटे नाम बन गई थी। तो, लाइब्रेरी और हेडर के लिए एक्सकोड में खोज पथ सेट करने के बारे में आलेख में जिस तरह से उन्होंने उल्लेख किया है वह काम नहीं करेगा (एक्सकोड 3.1 में)। आपको अपने आप को पथ को कड़ी मेहनत करने की आवश्यकता होगी।

+2

किसी के पास इस मुद्दे का हालिया उत्तर है? – Alper

1

बस इसे सामान्य रूप से x86 sdk (iphone simulator) का उपयोग करके संकलित करें, फिर हाथ/आईओएस (arm-xxx-xxx) के लिए प्लेटफ़ॉर्म का उपयोग करके फिर "LIPO" (कमांड-लाइन टूल) का उपयोग करके एक .a में स्थिर libs को गठबंधन करें।)। एक इलाज करता है और यह पहिया को पुनर्निर्मित करने से कम सरल है (कम से कम उन छोटे libs के लिए) .... मैंने liblo और libdmtx के साथ ऐसा किया है और मुझे कोई समस्या नहीं है और यह मुझे दोनों करने के लिए 10 मिनट की तरह ले गया ... :-)