Re: SASL/LDAP/DB dependency hell. (was: Accepted cyrus-sasl 1.5.27-3.4 (i386 source))
On Wed, 09 Apr 2003 15:07:12 +0000, Stephen Frost wrote:
> I look forward to comments from others about this. Perhaps developing a
> way to have 'versioned includes' if you will would be a solution but I
> would expect it to require a fair bit of effort to deal with.
That doesn't work with the current scheme.
Briefly, the compiler writes an onject file which wants BAR from library
FOO. libFOO.so contains symbols BAR@ (no version), BAR@v1, BAR@v2, and
The linker uses the double-@ BAR to determine which version is the one
you're currently linking against.
Thus if you want /usr/include/foo_v2.h to contain a BAR which links
against BAR@v2, you'll either have to create some compiler/linker extension,
or you'll have to re-compile libFOO.so, declaring v2 to be the default
version, so that libFOO.so now contains BAR@@v2 and BAR@v3. Somebody else
on the same system, who would like to compile against foo.h (i.e.,
foo_v3.h), will generate a broken program if you do that.