Существует динамически связанный конфликт между различными динамическими библиотеками libjpeg в OSX. Сначала есть стандартный родной libJPEG.dylib(в/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/). Но если вы используете MacPorts, у вас также может быть связанный с портом libjpeg.dylib(in/opt/local/lib). Последнее может быть, например, установлено как зависимость для другого порта.
Это создает проблему, если вы ссылаетесь на вашу систему libJPEG (что предпочтительнее).
Тогда, если /opt/local/lib
находится в DYLD_LIBRARY_PATH, этот путь будет приоритетным при поиске динамического lib, что приведет к ошибке выполнения при загрузке символов:
dyld: Symbol not found: __cg_jpeg_resync_to_restart
Referenced from:
/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
Expected in: /opt/local/lib/libJPEG.dylib
in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
Trace/BPT trap: 5
Итак, у меня есть два вопроса (вероятно, связанные):
-
Что является хорошим способом решения актуальной проблемы (удаление
/opt/local/lib
изDYLD_LIBRARY_PATH
, очевидно, решает его, но создает проблемы для других зависимостей)? -
Какие еще пути ищутся для динамических библиотек (I.e. Где указан путь "/System/Library" ) и почему DYLD_LIBRARY_PATH занимает более высокий приоритет?