I have the following shared libraries linked in my executable:
$ otool -L myexe
mds:
libchartdir.4.dylib (compatibility version 4.0.0, current version 4.1.0)
/opt/local/lib/libQuantLib-0.9.0.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/local/lib/libboost_date_time-1_34_1.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/local/lib/libboost_program_options-1_34_1.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/local/lib/liblog4cpp.4.dylib (compatibility version 5.0.0, current version 5.6.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 11.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.11)
/System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime (compatibility version 1.0.0, current version 861.0.0)
/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
libchartdir, the first library in the otool list, does not have an absolute path set. I have to set the DYLD_FALLBACK_LIBRARY_PATH to /opt/local/lib to let dyld find it at runtime.
What makes the other libraries installed under /opt/local/lib (QuantLib, boost) have their path recorded in the executable?
$ otool -L myexe
mds:
libchartdir.4.dylib (compatibility version 4.0.0, current version 4.1.0)
/opt/local/lib/libQuantLib-0.9.0.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/local/lib/libboost_date_time-1_34_1.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/local/lib/libboost_program_options-1_34_1.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/local/lib/liblog4cpp.4.dylib (compatibility version 5.0.0, current version 5.6.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 11.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.11)
/System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime (compatibility version 1.0.0, current version 861.0.0)
/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
libchartdir, the first library in the otool list, does not have an absolute path set. I have to set the DYLD_FALLBACK_LIBRARY_PATH to /opt/local/lib to let dyld find it at runtime.
What makes the other libraries installed under /opt/local/lib (QuantLib, boost) have their path recorded in the executable?