2012-03-01 12 views
6

के लिए जीएमपी बनाएं मुझे एक आईफोन प्रोग्राम में GMP का उपयोग करने की ज़रूरत है, लेकिन वास्तव में यह नहीं पता कि कहां से शुरू करना है। मुझे पता है कि मुझे डिवाइस के लिए एक संस्करण और सिम्युलेटर के लिए एक संस्करण बनाना है, लेकिन जितना मुझे पता है उतना ही है। मैंने चारों ओर देखने की कोशिश की है लेकिन ज्यादा नहीं मिला है।आईओएस

क्या कोई भी यहां GMP को iphone के लिए सफलतापूर्वक बनाता है जो मुझे प्रक्रिया के माध्यम से मार्गदर्शन करने की देखभाल करेगा?

मैंने Building GMP for iOS देखा लेकिन यह मेरे लिए काम नहीं कर रहा है। मैंने सोचा कि मैं सफलतापूर्वक उपयोग कर इसे बनाया था:

./configure CC="/Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/bin/llvm-gcc-4.2" CXX="/Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/bin/llvm-g++-4.2" CPP="/Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/bin/llvm-gcc-4.2 -E" LD="$IOS/usr/bin/ld" CPPFLAGS="-arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -miphoneos-version-min=4.2" AR="$IOS/usr/bin/ar" NM="$IOS/usr/bin/nm" NMEDIT="$IOS/usr/bin/nmedit" LIBTOOL="$IOS/usr/bin/libtool" LIPO="$IOS/usr/bin/lipo" OTOOL="$IOS/usr/bin/otool" RANLIB="$IOS/usr/bin/ranlib" STRIP="$IOS/usr/bin/strip" --disable-shared --enable-static --prefix=$IOS/usr/local --host=none-apple-darwin10

तो स्थापित कर सकते हैं।

/usr/local/lib में मेरे पास libgmp.a है। लेकिन जब मैं xcode करने पर खींचें जब मैं यह संकलन करने के लिए जाना मुझसे कहता है:

ignoring file /Users/daniel/Desktop/libgmp.a, file was built for archive which is not the architecture being linked (armv7) (मैं किसी कारण से मेरे डेस्कटॉप में गिरा दिया, फिर मेरे Xcode प्रोजेक्ट में घसीटा)

यह मैं पागल गाड़ी चला रहा है। क्या कोई मदद कर सकता है? ध्यान रखें मैं इन उपकरणों का उपयोग कर एक पूर्ण नोब हूँ।

मान लीजिए कि मुझे सहायता मिलती है और मैं यह काम कर सकता हूं। मैं इसे एक फ्रेमवर्क में बदलने के बारे में कैसे जाउंगा जो armv6, armv7, और simulator(i386) पर काम करेगा?

अग्रिम धन्यवाद।

दान

अद्यतन: चाहिए किसी और को यहाँ समस्या है मैं इसे कैसे हल किया है।

  1. पहला क्रॉस जीएमपी 3 बार संकलित करता है, आर्किटेक्चर को armv6 पर सेट करता है। armv7, और i386 क्रमशः। बांह संस्करणों का निर्माण करते समय ध्वज-डीएनओ_एएसएम को सीपीपीएफएलजीएस में जोड़ें।

  2. ढूँढें LIPO तीन ए फ़ाइलें एक साथ

  3. आयात .एक फ़ाइल gmp.g और gmpgxx.h साथ Xcode करने के लिए।

  4. हो गया

+0

मैंने इसे समझ लिया। अब मेरे पास एक काम कर रहे जीएमपी लाइब्रेरी है जो सिम्युलेटर (i386) और डिवाइस (armv6 और armv7) के लिए काम करती है। मुझे आश्चर्य है कि क्या मैं एनडीके के साथ एंड्रॉइड विकास के armv6/7 भाग का उपयोग कर सकता हूं। अब एनएसएसटींग के साथ अच्छा खेलने के लिए एक उद्देश्य सी रैपर लिखने के लिए। – user1178964

+4

आप अपने प्रश्न का उत्तर पोस्ट कर सकते हैं (और चाहिए), और इसे स्वीकार कर सकते हैं। –

उत्तर

6

लूटने ने सुझाव दिया है, मैं मेरे सवाल का जवाब और जवाब को स्वीकार करेंगे। मैं इसके लिए नया हूं, इसलिए यदि कोई आसान तरीका है तो मुझे माफ़ कर दो, इस तरह मैंने इसे प्रबंधित किया।

आईफोन के लिए जीएमपी बनाने के लिए आपको कमांड लाइन से तीन बार पुस्तकालय बनाना होगा। Armv6, armv7, और i386 आर्किटेक्चर के लिए बनाएँ। एक्सकोड में कोई समस्या सुनिश्चित करने के लिए सुनिश्चित करें कि आप CPPFLAGS में -DNO_ASM जोड़ें। एक बार आपके पास तीन। ए फाइलें हों, उन्हें एक लाइब्रेरी में एक साथ लिपो करें।

अब आप लिपो के साथ बनाई गई लाइब्रेरी को एक्सकोड में जोड़ सकते हैं और हेडर शामिल कर सकते हैं, अब आपके पास जीएमपी आईफोन विकास के लिए काम कर रहा है।

मुझे आशा है कि इस मदद करता है। मैंने इसे समझने की कोशिश में कुछ दिन बिताए।

+0

उत्तर के लिए धन्यवाद लेकिन क्या आप एक लिंक प्रदान कर सकते हैं ताकि donwloadable पुस्तकालय? मैं इसे काम करने के लिए सीम नहीं कर सकता। धन्यवाद! – doozMen

+0

किसी भी आर्किटेक्चर के लिए काम करने के लिए आपको क्रॉस-कंपाइल चरण कैसे मिला? जब मैं इसे आज़माता हूं, तो मुझे वही समस्या मिलती है जिसे आपने मूल रूप से रिपोर्ट किया था। – hrabinowitz

+0

क्रॉस-कंपाइल करने का प्रयास करते समय, मैं हमेशा इस कॉन्फ़िगरेशन त्रुटि से फंस जाता हूं: "कॉन्फ़िगर करें: त्रुटि: ओह, mp_limb_t 64 बिट्स है, लेकिन इस कॉन्फ़िगरेशन में असेंबलर कोड 32 बिट्स की अपेक्षा करता है।" – hrabinowitz

0

आप ओपनएसएसएल के लिए इस bash script से प्रेरित हो सकते हैं और इसे जीएमपी के लिए अनुकूलित कर सकते हैं। यह मानक configure स्क्रिप्ट का उपयोग करता है और प्रतिलिपि का उपयोग कर सीसी और CFLAGS विकल्प।