Кросс-компиляция библиотеки c открытым исходным кодом для iOS и XCode 4.3 - PullRequest
10 голосов
/ 28 февраля 2012

Я бы хотел использовать отличную библиотеку stringencoders в приложении для iOS.Это довольно типичная библиотека c, со скриптом configure, сгенерированным autoconf, и make-файлом.

Я хотел бы скомпилировать версии arm7 и i386 для Mac OSX, а затем использовать lipo для создания толстого двоичного файла.

У меня проблемы с выяснением того, как убедить инструменты сборки создать мои двоичные файлы для конкретной платформы.Есть несколько статей и даже несколько сценариев, но большинство из них нацелены на XCode 4.2 и не работают с 4.3.

Похоже, что можно создать довольно общий сценарий сборки, который можетпоиграйтесь с configure и make, но я не знаю, с чего начать.

Вы успешно сделали что-нибудь подобное?Мне бы хотелось несколько указателей!

Кстати: «импортировать весь исходный код в ваш проект» НЕ является жизнеспособным решением.Так лежит безумие.

Спасибо.

Ответы [ 4 ]

4 голосов
/ 10 ноября 2013

Я портировал несколько библиотек C с открытым исходным кодом на iOS (см. Порты iOS ).Я обнаружил, что самый надежный способ портировать библиотеку - это создать новый проект Xcode с целью сборки для статической библиотеки iOS.Важно отметить, что Apple не позволит вашему приложению iOS содержать динамические библиотеки, если вы планируете распространять свое приложение в магазине приложений iTunes, поэтому вы не сможете использовать библиотеки FAT.

Это шагиЯ обычно следую при переносе библиотек на iOS, которая обычно создается с помощью GNU Autotools:

  1. Запустите ./configure с соответствующими флагами на OS X.
  2. Убедитесь, что библиотека правильно собирается на ОСX с использованием make.
  3. Создайте новый проект Xcode с помощью шаблона статической библиотеки iOS.
  4. Добавьте файл config.h из предыдущего запуска configure в проект Xcode.
  5. Чтениефайл automake (Makefile.am) и добавьте ссылки на источники в целях automaker в цель Xcode для статической библиотеки.
  6. Скопируйте флаги CPP (т. е. -DHAVE_CONFIG_H) из файла automake в настройки сборкив XCode.
  7. Скомпилируйте в XCode и начните запускать ошибки (обычно добавляя отсутствующий заголовок, включая пути или пропуски).ng исходные файлы).

Структура каталогов, которую я обычно использую, выглядит следующим образом:

project/
project/ported-project.xcodeproj
project/project-x.x.x.tar.gz
project/project-x.x.x
project/project -> project-x.x.x

Я знаю, что это не совсем то, что вы просили в своем вопросе, однако этоприблизительное описание шагов, которые я использовал в течение многих лет для переноса библиотек.Преимущество создания реального XCode для компиляции перенесенной библиотеки состоит в том, что она облегчает интеграцию библиотеки в несколько приложений XCode для iOS.

Если вам нужны пояснения или более подробные инструкции, дайте мне знать, и я сообщупопробуйте написать более подробные инструкции и обновить мой ответ.

1 голос
/ 23 апреля 2012

Можно ли добавить исходные файлы (т.е. файлы .c) в ваш проект напрямую?

0 голосов
/ 12 июня 2013

Создайте файлы своего проекта, используя gyp: http://code.google.com/p/gyp/ Я использую его для обмена библиотеками между win / osx / ios и linux (pi).

0 голосов
/ 23 апреля 2012

Objective C является надмножеством C, поэтому я удивлен, что код не работал прямо из коробки в XCode 4. Вы что-то упускаете?просто предлагаю

...