Компиляция C lib для iPhone
-
25-09-2019 - |
Вопрос
Я пытаюсь собрать привязку zeromq c, чтобы иметь возможность использовать его на iPhone, вот мои параметры настройки:
./configure --host=arm-apple-darwin --enable-static=yes --enable-shared=no CC=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1 CFLAGS="-pipe -std=c99 -Wno-trigraphs -fpascal-strings -O0 -Wreturn-type -Wunused-variable -fmessage-length=0 -fvisibility=hidden -miphoneos-version-min=3.1.2 -gdwarf-2 -mthumb -I/Library/iPhone/include -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk -mdynamic-no-pic" CPP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/cpp AR=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar AS=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/as LIBTOOL=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool STRIP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/strip RANLIB=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib
Он на самом деле настраивает и компилирует нормально, но когда я добавляю его в раздел Xcode Frameworks, я получаю предупреждение: ld: warning: in /path/to/app/libzmq.a, file was built for unsupported file format which is not the architecture being linked (armv7)
И много символов не нашли ошибки.
Если я изменим текущую активную архитектуру из ARMV6 в ARMV7, предупреждающее сообщение изменит его в ARMV6. Что я делаю неправильно ?
Спасибо, Дэн
Решение
Похоже, вы строите Universal ARMV6 / ARMV7 Binary для iPhone (это значение по умолчанию, так что имеет смысл). Это означает, что вам нужно построить универсальную библиотеку для связи против. Строить обе библиотеки, а затем используйте lipo
объединить два.
Например, построить ARMV6 One и поместите его в armv6/libfoo.a
, и ARMV7 один в armv7/libfoo.a
. Отказ Затем пробежать
lipo -arch armv6 armv6/libfoo.a -arch armv7 armv7/libfoo.a -output libfoo.a -create
Создать универсальную библиотеку libfoo.a
.
Другие советы
Учитывая предупреждающее сообщение от ld
, Я думаю, вы не составляете библиотеку для правильной платформы. И дано вы используете configure
, Я предполагаю, что вы пытаетесь составить библиотеку за пределами XCode, а затем принести его в XCODE, чтобы связать его.
Возможно, вы можете попробовать запустить настроить, чтобы настроить заголовки, но сделайте фактическую шаг компиляции внутри XCode?
Здесь здесь находятся много связанных вопросов, так что о компиляции сторонних (внешних) библиотек C или C ++ для использования в проектах iPhone.
Создание статической библиотеки для iPhone
GETIVED: нужна помощь в компиляции этой библиотеки для iPhone