Компилировать C lib для iPhone - PullRequest
       26

Компилировать C lib для iPhone

4 голосов
/ 31 августа 2010

Я пытаюсь скомпилировать привязку 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.Что я делаю не так?

Спасибо, Дэн

Ответы [ 2 ]

6 голосов
/ 01 сентября 2010

Похоже, вы создаете универсальный двоичный файл armv6 / armv7 для iPhone (это значение по умолчанию, так что это имеет смысл).Это означает, что вам нужно создать универсальную библиотеку для ссылок.Создайте обе библиотеки, а затем используйте lipo для объединения двух.

Например, соберите один armv6 и поместите его в armv6/libfoo.a, а один armv7 в armv7/libfoo.a,Затем запустите

lipo -arch armv6 armv6/libfoo.a -arch armv7 armv7/libfoo.a -output libfoo.a -create

, чтобы создать универсальную библиотеку libfoo.a.

0 голосов
/ 01 сентября 2010

Учитывая предупреждение от ld, я думаю, вы не компилируете библиотеку для правильной платформы.И, учитывая, что вы используете configure, я предполагаю, что вы пытаетесь скомпилировать библиотеку вне XCode, а затем перенести ее в XCode, чтобы связать ее.

Возможно, вы можете попробовать запустить configure для установкиваши заголовки, но действительно ли шаг компиляции внутри XCode?

В SO много вопросов, связанных с компиляцией сторонних (внешних) библиотек C или C ++ для использования в проектах iPhone.

Создание статической библиотеки для iPhone

TiMidity: нужна помощь при компиляции этой библиотеки для iPhone

...