Компиляция libjpeg для iOS
Я пытаюсь скомпилировать проект для iOS 6 в XCode, и я использую следующие заголовки, которые включают в себя необходимые мне функции:
#include "cdjpeg.h" /* Common decls for cjpeg/djpeg applications */
#include "transupp.h" /* Support routines for jpegtran */
Это прямо из утилитарных источников jpegtran. Я уже установил библиотеку jpeg, и в моем /usr/local/lib/ есть libjpeg.a. Однако, когда я пытаюсь скомпилировать, я получаю сообщение об ошибке "Неопределенные символы для архитектуры i386" или "Неопределенные символы для архитектуры armv7", в зависимости от того, является ли цель симулятором iPhone или нет. Вот ключевые слова, для которых он не может найти символы:
"_jpeg_stdio_src"
"_jpeg_finish_compress"
"_jcopy_markers_execute"
"_jpeg_copy_critical_parameters"
"_jtransform_adjust_parameters"
"_jpeg_destroy_compress"
"_jtransform_execute_transform"
"_jpeg_finish_decompress"
"_jpeg_read_header"
"_jtransform_request_workspace"
"_jpeg_write_coefficients"
"_jpeg_read_coefficients"
"_jpeg_destroy_decompress"
"_jpeg_stdio_dest"
"_jcopy_markers_setup"
Я сталкивался с отсутствующими ошибками символов и всегда заканчивал тем, что отказывался от использования сторонних библиотек, но в этом конкретном случае пути назад нет.
Что я здесь не так делаю?
РЕДАКТИРОВАТЬ: я добавил libjpeg.a в настройки проекта, и он пошел дальше, но остановился на:
Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn)
Target: i386-apple-darwin12.2.0
Thread model: posix
"lots-of-debug-paths"
ld: library not found for -ljpeg
clang: error: linker command failed with exit code 1 (use -v to see invocation)
2 ответа
Я не знаю, как вы это скомпилировали. Но вам нужно изменить make install, чтобы скомпилировать его в i386 и armv7. Я уверен, что вы просто запустили make, поэтому он скомпилировал его для вас, mac, который, безусловно, является аркой x84_64, и это, безусловно, не то, что вам нужно
Вы можете проверить с
lipo -info /usr/local/lib/libjpeg.a // if libjpeg.a is at this path
или же
file /usr/local/lib/libjpeg.a
Я недавно нуждался libjpeg
для iOS тоже (как зависимость от сторонней библиотеки)
Я просто использовал http://www.libjpeg-turbo.org/, который поставляется с предварительно скомпилированным толстым двоичным файлом
Architectures in the fat file: libjpeg.dylib are: i386 x86_64 armv6 armv7 armv7s arm64