Shared libraries ought to contain the full path so that executables built against them can find them at runtime.
eg, $ otool -L libgcc_s.1.dylib libgcc_s.1.dylib: /opt/gcc-4.3.3/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.3) However, there's no self-path in $ otool -L libgnat.dylib libgnat.dylib: libgnat-4.3.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.3) /opt/gcc-4.3.3/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) and no self-path or (because there's none in libgnat itself, I think) path to libgnat in $ otool -L libgnarl.dylib libgnarl.dylib: libgnarl-4.3.dylib (compatibility version 0.0.0, current version 0.0.0) libgnat-4.3.dylib (compatibility version 0.0.0, current version 0.0.0) /opt/gcc-4.3.3/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.3) Same behaviour with both Apple's libtool and GNU libtool 2.2. Interestingly gprbuild knows how to do this right when generating shared libraries itself. It's possible to fix the missing full paths using install_name_tool but this is a bit user-unfriendly! -- Summary: libgnat.dylib, libgnarl.dylib don't contain full paths Product: gcc Version: 4.3.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: ada AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: simon at pushface dot org GCC build triplet: i386-apple-darwin9.6.0 GCC host triplet: i386-apple-darwin9.6.0 GCC target triplet: i386-apple-darwin9.6.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39336