Конфликт между приоритетом динамической компоновки в 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 имеет более высокий приоритет по приоритету?