Сборка GMP для iOS - PullRequest
       2

Сборка GMP для iOS

6 голосов
/ 01 марта 2012

Мне нужно использовать GMP в программе для iphone, над которой я работаю, но не знаю, с чего начать. Я знаю, что мне нужно создать версию для устройства и версию для симулятора, но это столько, сколько я знаю. Я пытался осмотреться, но не смог найти много.

Кто-нибудь здесь успешно построил GMP для iphone, который хотел бы помочь мне в этом процессе?

Я видел Сборка GMP для 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)?

Заранее спасибо.

Dan

ОБНОВЛЕНИЕ: Если у кого-то еще есть проблема, вот как я решил ее.

  1. Первый кросс-компиляция GMP 3 раза с настройкой архитектуры на armv6. armv7 и i386 соответственно. При сборке версий оружия добавьте флаг -DNO_ASM к CPPFLAGS.

  2. Найдите в LIPO три файла .a вместе

  3. Импорт .a файла в XCode с gmp.g и gmpgxx.h.

  4. Готово

Ответы [ 2 ]

6 голосов
/ 09 марта 2012

По предложению граба я отвечу на свой вопрос и приму ответ. Я новичок в этом, поэтому, если есть более простой способ простить меня, это то, как мне удалось это сделать.

Чтобы собрать GMP для iphone, вы должны собрать три библиотеки из командной строки три раза. Сборка для архитектур armv6, armv7 и i386. Чтобы не было проблем в xcode, убедитесь, что вы добавили -DNO_ASM в CPPFLAGS. Когда у вас есть три файла .a, объедините их в одну библиотеку.

Теперь вы можете добавить библиотеку, созданную с помощью lipo, в xcode и включить заголовки, теперь у вас есть GMP, работающий для разработки на iphone.

Надеюсь, это поможет. Я провел пару дней, пытаясь понять это.

0 голосов
/ 16 января 2014

Вы можете быть вдохновлены этим bash-скриптом для OpenSSL и адаптировать его для GMP. Он использует стандартный configure скрипт и заменяет CC и CFLAGS, используя perl.

...