Konflikt zwischen dynamischer Verknüpfungspriorität in OSX?

Unter OSX gibt es einen Dynamic-Linking-Konflikt zwischen verschiedenen dynamischen libjpeg-Bibliotheken. Zunächst gibt es eine native Standard-libJPEG.dylib (in /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/). Wenn Sie MacPorts verwenden, können Sie auch eine portbezogene libjpeg.dylib in (in / opt / local / lib) haben. Letzteres kann beispielsweise als Abhängigkeit für einen anderen Port installiert worden sein.

Dies führt zu einem Problem, wenn Sie eine Verknüpfung zu Ihrem System libJPEG herstellen (was bevorzugt wird). Dann wenn/opt/local/lib In DYLD_LIBRARY_PATH wird dieser Pfad bei der Suche nach einer dynamischen Bibliothek priorisiert, was zu einem Laufzeitfehler beim Laden von Symbolen führt:

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

Ich habe also zwei Fragen (wahrscheinlich im Zusammenhang):

Was ist ein guter Weg, um das eigentliche Problem zu lösen (Entfernen von/opt/local/lib vonDYLD_LIBRARY_PATH löst es offensichtlich, schafft aber Probleme für andere Abhängigkeiten)?

Welche anderen Pfade werden nach dynamischen Bibliotheken durchsucht (d. H. Wo ist der Pfad "/ System / Library" angegeben) und warum wird DYLD_LIBRARY_PATH in Bezug auf die Priorität höher eingestuft?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage