Создание статической библиотеки для iPhone - PullRequest
16 голосов
/ 07 декабря 2008

Есть библиотека с открытым исходным кодом, которую я хотел бы использовать для своего приложения для iPhone. Библиотека написана на C и компилируется с Makefiles. Я хотел бы использовать статическую библиотеку.

Если я добавляю файл .a к своим зависимостям проекта, он хорошо работает с симулятором, но не связывается при нацеливании на iPhone SDK (конечно, потому что файл .a скомпилирован для платформы Intel).

Какие флаги компилятора GCC я должен использовать для компиляции статической библиотеки для iPhone SDK? Я думал, что опция -arch предоставит мне архитектуру iPhone, но не повезло.

Любая помощь будет оценена.

Ответы [ 4 ]

6 голосов
/ 05 марта 2009

За библиотеку, основанную на autoconf, я бы проголосовал за скрипт сборки Кристофера Ставарса:

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

С помощью этого сценария вы можете автоматизировать весь процесс с помощью одной команды и легко создавать двоичные файлы библиотеки для различных платформ, таких как iPhoneOS 2.0 / 2.1 / 2.2 / 2.2.1 и iPhoneSimulator 2.0 / 2.1 / 2.2 / 2.2. 1.

Однако, из-за изменения Xcode 3.1 , настройка сборки $ (SDKROOT) стала несколько короткими именами, такими как «macosx10.5», «iphoneos2.2.1» или «iphonesimulator2.2.1». Таким образом, способ, который он упомянул в статье об установке пути поиска в XCode для библиотеки и заголовка, не будет работать (в XCode 3.1). Вам нужно будет жестко закодировать путь самостоятельно.

3 голосов
/ 08 декабря 2008

Попробуйте компилировать с arm-apple-darwin-gcc в качестве приложения GCC. Затем вы можете использовать lipo, чтобы объединить 2 статические библиотеки (arm и 386) вместе, чтобы процесс разработки на sim-карте и на устройстве был плавным.

1 голос
/ 16 мая 2011

Просто скомпилируйте его как обычно, используя x86 sdk (симулятор iphone), затем снова используя платформу для arm / ios (arm-xxx-xxx), затем объедините обе статические библиотеки в .a, используя "LIPO" (инструмент командной строки) , Работает удовольствие, и это проще, чем заново изобретать колесо (по крайней мере, для тех маленьких библиотек) .... Я сделал это с liblo и libdmtx, и у меня не было никаких проблем, и мне потребовалось 10 минут, чтобы сделать оба ... : -)

0 голосов
/ 09 декабря 2008

После нескольких попыток использовать компилятор GCC arm с предоставленными подсказками здесь я сдался. В моем случае гораздо проще просто перенести библиотеку в XCode, чем пытаться скомпилировать статическую библиотеку для iPhone.

...