OSX上的不同libjpeg动态库之间存在动态链接冲突.首先是标准的原生libJPEG.dylib(在/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/中).但是,如果您使用的是MacPorts,则还可以在/ opt/local/lib中使用与端口相关的libjpeg.dylib.例如,后者可以作为某些其他端口的依赖项安装.
当您链接到系统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
Run Code Online (Sandbox Code Playgroud)
所以我有两个问题(可能相关):
什么是解决实际问题的好方法(/opt/local/lib从DYLD_LIBRARY_PATH显然解决它但从而为其他依赖创建问题)?
搜索动态库的其他路径(即指定的"/ System/Library"路径在哪里)以及为什么DYLD_LIBRARY_PATH的优先级更高?
我正在尝试运行java版本的PowerLoom,但是当我尝试在终端中启动它时,我收到以下错误消息:
dyld: Symbol not found: __cg_jpeg_resync_to_restart
Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
Expected in: /usr/local/lib/libJPEG.dylib
in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
Trace/BPT trap: 5
Run Code Online (Sandbox Code Playgroud)
对于这个问题,这似乎是一个非常类似的问题,除了答案是针对MAMP/Cacti的.有关如何处理此问题的任何提示,甚至此错误信息的真正含义是什么?