2013-07-29 4 views
0

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

Я построил его со следующими настройками

$ export CC="clang" 
$ export CFLAGS="-Wall -g -std=c11 -pipe -Os -gdwarf-2" 
$ ./configure --enable-static 
make install 

Это прекрасно работает, когда я проверить библиотеку с моей библиотеке test.c. Однако, когда я запускаю его на моем iOS проекте, я получил рассогласование на CurlchkszEQ(long, CURL_SIZEOF_LONG)

Я думаю, что проблема в том, что CURL_SIZEOF_LONG устанавливается равным 8, а долго прошивкой является 4.

Кто-нибудь знает, что пошло не так с настройкой конфигурации?

+0

Какое «несоответствие» вы получаете? Ошибка компилятора? Ошибка компоновщика? Ошибка/сбой во время выполнения? Неожиданные результаты вычислений? Носовые демоны? –

ответ

0

Вы хотите перекрестно скомпилировать libcurl для iOS, но проблема в том, что вы используете clang, который по умолчанию производит 64-bitx86_64 объектных файлов.

Другими словами, вы должны работать с инструментарием, IOS (xcrun -sdk iphoneos clang), обеспечивают правильный флаг архитектуры (ов) [1] (например -arch armv7) и использовать правильный sysroot путь.

Я рекомендую вам обратиться к:

  • curl-ios-build-scripts: сборник полезных скриптов, используемых для сборки (ОМТ) завитка для прошивки 5+ и OSX 10.7+,
  • или http://seiryu.home.comcast.net/~seiryu/libcurl-ios.html, который обеспечивает готовый - использовать предварительно скомпилированный двоичный файл.

[1]: вы можете создать толстую библиотеку, предназначенную для архитектур ARMv7, ARMv7s и i386 (имитаторов).

+0

А, сценарии очень полезны. Спасибо. – user2624628

Смежные вопросы