The Apple and MacPorts versions of these libraries coexist just fine most 
cases. I cannot advocate the steps you described below, and without further 
information, I cannot say why you experienced problems before.


On Nov 18, 2010, at 13:57, Robert Baruch wrote:

> Hi all,
> 
> To save some of you some time, if you run something and you get an error like 
> this:
> 
> dyld: Symbol not found: _gll_noop 
>  Referenced from: 
> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL 
>  Expected in: /opt/local/lib/libGL.dylib
> 
> or this:
> 
> dyld: Symbol not found: __cg_jpeg_resync_to_restart 
>  Referenced from: 
> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
>  
>  Expected in: /opt/local/lib/libJPEG.dylib 
> 
> or this:
> 
> dyld: lazy symbol binding failed: Symbol not found: __cg_TIFFSetErrorHandler
> Referenced from: 
> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
> Expected in: /opt/local/lib/libTIFF.dylib
> 
> or this:
> dyld: Symbol not found: __cg_png_create_info_struct
>  Referenced from: 
> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
>  Expected in: /optlocal/lib/libPng.dylib
> Then congratulations, you've discovered that OSX and MacPorts are 
> incompatible with each other for these libraries! For example, Macport's 
> libjpeg contains the symbol _jpeg_resync_to_restart, but not what Apple is 
> looking for, __cg_jpeg_resync_to_restart.
> 
> I have seen several solutions, including "removing any DYLD_LIBRARY_PATH" 
> (which doesn't help when you don't have it set), and "removing the offending 
> macports library", which doesn't help when it will just get reinstalled when 
> you try to install a port which has those libraries as a dependency.
> 
> The solution that worked for me was this (note that if you don't have a 
> particular /opt/local/lib library then you don't need that line)
> 
> sudo ln -sf 
> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib 
> /opt/local/lib/libGL.dylib
> 
> sudo ln -sf 
> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
>  /opt/local/lib/libpng.dylib
> 
> sudo ln -sf 
> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
>  /opt/local/lib/libtiff.dylib
> 
> sudo ln -sf 
> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
>  /opt/local/lib/libjpeg.dylib
> 
> Why does this work? Because for whatever reason, when Apple requests 
> libJPEG.dyld, whatever system searches for it finds 
> /opt/local/lib/libjpeg.dyld because the search is case insensitive. For a 
> Unix operating system. Go figure. The lines above will force any program 
> looking for libjpeg.dyld to be redirected to Apple's libJPEG.dyld.
> 
> But wait, what if you WANT Macport's libjpeg.dyld? Sorry, not possible unless 
> you statically link your program to libjpeg.a. And since I've never done that 
> before, I can't help you if you want to do that :(
> 
> --Rob


_______________________________________________
macports-users mailing list
macports-users@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-users

Reply via email to