On Wed, 23 Jan 2008, Andy Dougherty wrote:

> On Wed, 23 Jan 2008, Allison Randal via RT wrote:
> 
> Summary (edited for clarity)
> 
> > > c++ -o pbc_to_exe pbc_to_exe.o  -Lblib/lib -lparrot src/parrot_config.o
> 
> Fails. But adding $O_FILES to the end works:
> 
> >> c++ -o pbc_to_exe pbc_to_exe.o  -Lblib/lib -lparrot src/parrot_config.o 
> >> $(O_FILES)
> 
> This looks like the same problem I reported and fixed in
> 
>     [perl #49314] AutoReply: [PATCH] pbc_to_exe should list libraries last
> 
> Looks like it's broken again.
> 
> The fix is probably to just move src/parrot_config.o *before* the
> libraries.  Even if that doesn't fix it for OS X, it's likely to be
> required on Unix systems with traditional linker behavior.

Oops.  Reading the original bug report more carefully, 

> c++ -o pbc_to_exe pbc_to_exe.o  -L/usr/local/lib -L/opt/local/lib 
> -L/sw/lib -L/sw/lib -L/opt/local/lib -L/sw/lib 
> -L/Users/allison/projects/svn/parrot/blib/lib -lparrot 
> -L/Users/allison/projects/svn/parrot/blib/lib -lm -lgmp -lreadline 
> /Users/allison/projects/svn/parrot/src/parrot_config.o
> /usr/bin/ld: Undefined symbols:
> _Parrot_set_executable_name
> collect2: ld returned 1 exit status

my suggested reordering is unlikely to fix this.  The undefined
symbol '_Parrot_set_executable_name' is referenced in pbc_to_exe.o, so
the linker should have been looking for it already when it encountered
-lparrot.  This indeed looks like something is going on to specifically
hide symbols, but I have no idea how Mac OS works in this regard.

Still, the reordering ought to be done.  parrot_config.o ought to appear
*before* -lparrot.

-- 
    Andy Dougherty              [EMAIL PROTECTED]

Reply via email to