[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: SASL/LDAP/DB dependency hell. (was: Accepted cyrus-sasl 1.5.27-3.4 (i386 source))



Hi,

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
BAR@@v3.

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.

-- 
Matthias



Reply to: