пʼятницю, 26 березня 2010 р.

libjpeg на Леопарді

Дуже багато часу змарнував з цим libjpeg'ом. Помилки бувають різні, але переважно компілятор скаржиться що якась функція відсутня у /usr/local/lib/libJPEG.dylib. Леопард має свої вбудовані бібліотеки для зображень і вони розташовані у /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources. Проте всі вони мають одну осбливість: назва після lib йде великими літерами. Наприклад, libJPEG.dylib або libTIFF.dylib. Бібліотеки досить старі і побудовані під Леопард, тому в них є деякі функції, що відсутні у стандарних версіях доступних до завантаження. Якщо стандартні версії встановлені у /usr/local/lib та змінні LD_LIBRARY_PATH і DYLD_LIBRARY_PATH вказують на ту директорію, компілятор використовуватими неприйнятну версію. (Нагадаю, що типова файлова система під Леопардом не залежить від реґістру; тому libjpeg.dylib та libJPEG.dylib не відрізняються.) У таких випадках перед компілюванням треба додати стежку до Леопардівських бібліотек.

export LD_LIBRARY_PATH=/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources:$LD_LIBRARY_PATH
export DYLD_LIBRARY_PATH=$LD_LIBRARY_PATH


Джерело натхнення: http://tolstoy.newcastle.edu.au/R/devel/05/05/0755.html