On Wednesday, August 14, 2002, at 04:07 PM, Tom Lane wrote:
> Alex Rice <alex_rice@arc.to> writes:
>> dyld: perl multiple definitions of symbol _DLAddHead
>> /Library/Perl/darwin/auto/mapscript/mapscript.bundle definition
>> of _DLAddHead
>> /Library/Perl/darwin/auto/DBD/Pg/Pg.bundle definition of _DLAddHead
>
>> The strange thing is, of the 3 modules DBI, Pg and mapscript, all
>> 3 work OK independently, but when I use; any two them from the
>> same script, the above symbol definitions problem occurs and the
>> script dies.
>
> Hm. It would appear that all three modules have copies of libpq.a
> statically bound into them, and OS X's dynamic loader won't accept
> loading dynamic libraries with conflicting symbol names.
>
> DLAddHead is presumably just the first conflict the loader ran into
> --- if you got rid of that, it'd still fail on PQExec and the other
> symbols exported by libpq.
>
> I imagine that this can be worked around by changing the way that
> these modules are linked, but I really have no idea exactly what has
> to be done or by whom. You might try asking around among OSX gurus
> about what to do with name conflicts between libraries.
OK I managed to get DBD::Pg to link dynamically and I'm no longer
getting the error. DBD::Pg seemed to insist on linking with
libpq.a, so I hid libpq.a and then it linked with libpq.so,
apparently. No more errors!
Alex Rice, Software Developer
Architectural Research Consultants, Inc.
alex_rice@arc.to
alrice@swcp.com