Eric Lemings wrote:
[...]
1) In a program compiled and linked with 4.2.0 the user
    replaces libstd.dylib.4.2.0 with libstd.dylib.4.2.1.

2) In a program compiled and linked with 4.2.1 the user
    replaces libstd.dylib.4.2.1 with libstd.dylib.4.2.0.

In both of these, the library is NOT in BUILDDIR/lib but
rather under PREFIX/lib (e.g., /usr/local/lib).

In this situation, the user would have to set the DYLD_LIBRARY_PATH
as they would have to set LD_LIBRARY_PATH on other Unix platforms.

I assume "this situation" refers to case (2) above. On most
platforms setting LD_LIBRARY_PATH can be avoided by installing
the lib in one of the usual locations that the dynamic linker
searches by default (e.g., /usr/lib or /usr/local/lib). Does
hardcoding BUILDDIR have any impact on this? (I can't tell
from the Mac OS X ld man page: http://tinyurl.com/4grw9o)


In the first case, the user would encounter incompatible version
error since 4.2.1 specifies version numbers in the library but
4.2.0 does not (i.e. it defaults to 0.0.0).  The 4.2.0 library
would have to be linked with the corresponding flags or the 4.2.1
library would have to be linked without these flags.

So 4.2.1 isn't forward compatible unless it's linked without
the flags added in STDCXX-488? I suppose we could live with
that.

Martin


In the second case, everything should work correctly, assuming
the DYLD_LIBRARY_PATH variable is set.

Brad.

Reply via email to