Tom Lane wrote:
> I don't recall the details at the moment, but I think we intentionally
> didn't adopt the .dylib extension for these files because of some subtle
> difference between them and plain shared libraries.
If I recall correctly from porting a plugin-based app to Mac OS X a few
years ago, there are issues with dlopen(...) on .dylib libraries.
I seem to remember having issues getting dylibs to resolve symbols from
the loading executable and already-loaded libraries; they wanted to
resolve all symbols as direct dependencies. I needed to use a .so to get
the library to resolve symbols in the loading application.
A quick bit of reading shows that:
- The extension doesn't matter, the OS doesn't care
- The library type, MH_DYLIB or MH_BUNDLE, is controlled by how
it's built only
- MH_DYLIB won't resolve symbols from the loading executable
and can't be unloaded, whereas MH_BUNDLE does and can.
- Most libraries on Mac OS X are MH_DYLIB
Found some info at:
http://developer.apple.com/documentation/DeveloperTools/Conceptual/MachORuntime/Reference/reference.html#//apple_ref/doc/uid/20001298-BAJHHFFF
under Fields, section "filetype"
--
Craig Ringer