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]