2012-10-30 2 views
1

Я пытаюсь скомпилировать проект для IOS 6 в XCode, и я использую следующие заголовки, которые включают в себя необходимый мне функцию:Компиляция libjpeg для прошивки

#include "cdjpeg.h"  /* Common decls for cjpeg/djpeg applications */ 
#include "transupp.h" /* Support routines for jpegtran */ 

Те прямо из jpegtran источники полезности. Я уже установил библиотеку jpeg, и libjpeg.a в моем/usr/local/lib /. Однако, когда я пытаюсь скомпилировать, я получаю сообщение об ошибке «Неопределенные символы для архитектуры 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" 

я столкнулся недостающими ошибки символа раньше, и всегда заканчивал отказ от использования 3-библиотек, но в данном конкретном случае нет никакого пути вокруг.

Что я здесь делаю неправильно?

EDIT: Я добавил 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) 

ответ

1

Я не знаю, как вы собрали его. Но вам нужно изменить make install, чтобы скомпилировать его в i386 и armv7. Я уверен, что вы просто запустить марку, так что он был скомпилирован для вас макинтош, который, безусловно, x84_64 арка, и это, конечно, не то, что вы хотите

Вы можете проверить с

lipo -info /usr/local/lib/libjpeg.a // if libjpeg.a is at this path 

или

file /usr/local/lib/libjpeg.a 
+0

Спасибо, что утилита для файлов помогла много! – Kai

1

недавно я нужен libjpeg для прошивки тоже (как зависимость другой сторонней библиотеки)

я оказался просто используя libjpeg-turbo, который поставляется с предварительно скомпилированным жирным двоичным кодом

Architectures in the fat file: libjpeg.dylib are: i386 x86_64 armv6 armv7 armv7s arm64 
+0

Можете ли вы дать несколько инструкций о том, какие файлы именно вы включили? Я не могу заставить его работать. –

+1

@FotisDimanidis Вам нужно будет добавить библиотеку (или '.a' или' .dylib') к вашей цели, а также изменить путь поиска заголовка в настройках сборки, чтобы включить: '/ opt/libjpeg-turbo/include' (вот где libjpeg-turbo устанавливает свои двоичные файлы). – nyg

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