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.
More information about the macports-users