Konflikt między priorytetem dynamicznego łączenia w OSX?

Istnieje dynamiczny konflikt łączący różne biblioteki dynamiczne libjpeg w OSX. Najpierw jest standardowy natywny libJPEG.dylib (w /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/). Ale jeśli używasz MacPorts, możesz także mieć powiązany z portem libjpeg.dylib w (w / opt / local / lib). Ten ostatni może być na przykład zainstalowany jako zależność dla innego portu.

Stwarza to problem, gdy łączysz się z systemem libJPEG (co jest preferowane). A następnie, jeśli/opt/local/lib jest w DYLD_LIBRARY_PATH, ta ścieżka będzie traktowana priorytetowo podczas wyszukiwania dynamicznej biblioteki, co spowoduje błąd podczas wykonywania symboli:

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

Mam więc dwa pytania (prawdopodobnie związane):

Jaki jest dobry sposób rozwiązania rzeczywistego problemu (usunięcie/opt/local/lib zDYLD_LIBRARY_PATH oczywiście rozwiązuje to, ale stwarza problemy dla innych zależności)?

Jakie inne ścieżki są przeszukiwane dla dynamicznych bibliotek (tj. Gdzie jest określona ścieżka „/ System / Library”) i dlaczego DYLD_LIBRARY_PATH ma wyższą rangę?

questionAnswers(6)

yourAnswerToTheQuestion