On Fri, 18 Jul 2008, James E Keenan wrote:

> Parrot has been building successfully, albeit slowly, for me on  Darwin for
> several months now.  But I must say that the very last line of 'make' output
> always shows a lot of warnings of "multiple definitions of symbol".  Can
> anyone evaluate these?  Thanks.
> 
> /usr/bin/g++ -o pbc_merge \
>    src/pbc_merge.o \
>    src/parrot_config.o \
>    src/string_primitives.o \
>    -L/Users/jimk/work/parrot/blib/lib -L/Users/jimk/work/parrot/blib/lib
> -lparrot  -lm -lgmp -lreadline -framework OpenGL -framework GLUT -lcrypto
> -lintl  -undefined dynamic_lookup -L/sw/lib
> /usr/bin/ld: warning multiple definitions of symbol _str_dup
> src/string_primitives.o definition of _str_dup in section (__TEXT,__text)
> /Users/jimk/work/parrot/blib/lib/libparrot.dylib(string_primitives.o)
> definition of _str_dup
[more similar warnings omitted]

The problem is that src/string_primitives.o is being included twice:  It 
is already included in libparrot.dylib, but it is also being included 
explicitly on the link line.  That strikes me as quite odd.  I suspect the 
explicit linking to src/string_primitives.o can be omitted when building 
pbc_merge.

The other odd thing about this link line is the trailing -L/sw/lib at 
the very very end.  That's odd.  Usually, the -L flags go *before* the 
libraries.  It may be that Darwin's linker is insensitive to such details, 
but, parrot shouldn't assume that all linkers are similarly insensitive.

-- 
    Andy Dougherty              [EMAIL PROTECTED]

Reply via email to