Конфликт между приоритетом динамической компоновки в OSX?

Существует динамический конфликт между различными динамическими библиотеками libjpeg в OSX. Сначала есть стандартный родной libJPEG.dylib (в /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/). Но если вы используете MacPorts, вы также можете иметь связанный с портом libjpeg.dylib в (в / opt / local / lib). Последний, например, мог быть установлен как зависимость для какого-то другого порта.

Это создает проблему, когда вы ссылаетесь на вашу систему libJPEG (что является предпочтительным). Тогда если/opt/local/lib находится в DYLD_LIBRARY_PATH, этот путь будет иметь приоритет при поиске динамической библиотеки, что приведет к ошибке времени выполнения при загрузке символов:

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 очевидно решает это, но создает проблемы для других зависимостей)?

Какие другие пути ищутся для динамических библиотек (т.е. где "/ System / Library» путь указан) и почему DYLD_LIBRARY_PATH имеет более высокий приоритет по приоритету?

Ответы на вопрос(6)

Ваш ответ на вопрос