necessary info

Landon J Fuller landonf at macports.org
Wed Apr 28 12:14:44 PDT 2010


On Apr 28, 2010, at 11:46 AM, John B Brown wrote:

> dyld: Library not loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
>  Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
>  Reason: Incompatible library version: ImageIO requires version 1.0.0 or later, but libTIFF.dylib provides version 0.0.0
> 
> 	I've seen that error message before, during compiles that try to link libTIFF.dylib from the Apple default location. How do I overcome poorly integrated Apple libraries?

This is likely due to your setting of DYLD_LIBRARY_PATH, which overrides dyld's standard behavior. Apple's dynamic linker supports linking multiple libraries with the same basename (eg, libtiff.dylib) by encoding either a binary-relative or absolute path to the linked library. The 'DYNAMIC LIBRARY LOADING' section of dyld(1) has a very brief introduction on how this works.

With DYLD_LIBRARY_PATH set, dyld will instead first perform a simple search across the user-specified search paths, and any conflicting-named libraries found in the search path will take precedence over the intended libraries. If you have a libtiff.dylib in that search path, it will take precedence over the intended library in ImageIO.

To fix the issue, libraries that require DYLD_* environmental variables should be reconfigured/rebuilt to include proper install name paths (see ld(1) -install_name). As a work-around, using DYLD_FALLBACK_LIBRARY_PATH instead may resolve some conflicts.

-landonf


More information about the macports-users mailing list