Подтвердить что ты не робот

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

Там есть библиотека с открытым исходным кодом, которую я бы хотел использовать для своего iPhone-приложения. Библиотека написана на C и компилируется с помощью Make файлов. Я хотел бы использовать статическую библиотеку.

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

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

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

4b9b3361

Ответ 1

Для библиотеки на основе autoconf я бы проголосовал за Christopher Stawarz build script:

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

С помощью этого script вы можете автоматизировать весь процесс с помощью единой команды и легко создавать библиотеки для разных платформ, таких как 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). Вам нужно будет жестко закодировать путь самостоятельно.

Ответ 2

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

Ответ 3

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

Ответ 4

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