Компиляция xmlsec
для iPhone немного сложна, но может быть выполнена.
Прежде всего, некоторые общие соображения:
xmlsec
- проект GNU, использующий систему сборки GNU ; создание одного такого проекта равносильно запуску скрипта (конфигурации) и затем выполнению make
. configure создаст Makefile с учетом вашей конкретной конфигурации системы и позволит вам выбрать, какие опции xmlsec
включать или не включать в вашу сборку;
xmlsec
имеет несколько зависимостей от других библиотек: libssl
, libcrypto
(часть openssl), libxslt
, libxml2
, libz
и libiconv
. В iPhone SDK доступно только libxml2
и libz
, и вам нужно, чтобы все остальные были доступны в вашей системе и уже скомпилированы. Эти библиотеки - все проекты GNU, которые вы можете скомпилировать, применяя тот же подход, который я опишу позже для xmlsec
. Одно примечание: libxslt
. Apple включает libxslt
в iPhone SDK, но не делает доступным .h, поэтому вам не разрешено ссылаться на libxslt.dylib, который поставляется с iPhone SDK, и вам придется скомпилировать его самостоятельно.
импортировать исходные файлы из xmlsec
в проект iPhone сложно, если вы не знаете, какие файлы соответствуют xmlsec
и являются простыми зависимостями (xmlsec
дерево исходных текстов включает openssl, gnutls и т. Д., Которые не обязательно быть там), но прежде всего потому, что вы не можете контролировать, какие дополнительные функции xmlsec вы хотели бы включить (или исключить) в свою сборку, как это делает configure для вас;
поэтому я предпочел подход, который заключается в правильном использовании configure для создания Make-файла для iPhone, а затем в создании статической библиотеки (поскольку вам не разрешено использовать внешний dylib на iPhone);
Конкретно шаги для компиляции xmlsec
для iPhone:
0 - установить и скомпилировать все зависимости; если вы не можете найти их уже портированными для iPhone, вы можете применить (рекурсивно) тот же самый подход к ним;
1 - перейдите в корневой каталог libxmlsec и выполните команду:
CFLAGS=" -arch armv6 -std=c99 -isysroot
/Volumes/ext/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk"
CC="/Volumes/ext/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2"
./configure --host=arm-apple-darwin10 --disable-shared --disable-crypto-dl
--with-libxml=<path_to_where_libxml_is> --with-libxslt=<path_to_where_libxslt_is> --with-openssl=<path_to_where_openssl_is>
в приведенной выше команде я предполагаю, что заголовочные файлы и исполняемые файлы libxml будут найдены компилятором, поскольку они являются частью SDK. В противном случае включите их также.
2 - configure выдаст много выходных данных, и, если все пойдет хорошо, вы сможете выполнить команду:
make
3 - это должно работать нормально до завершения и создать ваш выходной файл: src/.libs/libxmlsec1.a
, который вы можете связать в своем проекте iPhone (вместе со всеми остальными зависит от библиотек).
Наконец, руководство по компиляции openSSL для iPhone .