building parrot

Andy Dougherty doughera at lafayette.edu
Sat Oct 25 18:01:32 UTC 2008


On Sat, 25 Oct 2008, Michael P. Soulier wrote:

> On 15/10/08 Andy Dougherty said:
> 
> > > No file by that name on the box anywhere.
> > 
> > Are you *sure*?  I don't know exactly what name you searched for, nor how
> > you searched for it, but this is just the sort of error message I'd expect
> > to see if you did have an old libparrot.so somewhere else on your system.
> 
> I'm building in /home/msoulier/temp/parrot.
> 
> So, I ran updatedb followed by "locate libparrot". All the hits can from under
> that directory.

Ok.  Though depending on your local set-up, that doesn't really prove
anything.  updatedb skips various files for various reasons (filesystems,
permissions, etc.) Without knowing way more details of your local
set-up, I can't tell whether or nor this actually means anything.
For example, note that your 'locate' command didn't actually locate
blib/lib/libparrot.so, even though your 'nm' command  below shows that
it exists.

Still, that doesn't seem to be the problem.  See below.

> locate libparrot
> /home/msoulier/temp/parrot/ports/cygwin/.svn/text-base/libparrot0.hint.svn-base
> /home/msoulier/temp/parrot/ports/cygwin/.svn/text-base/libparrot-devel.hint.svn-base
> /home/msoulier/temp/parrot/ports/cygwin/.svn/prop-base/libparrot0.hint.svn-base
> /home/msoulier/temp/parrot/ports/cygwin/.svn/prop-base/libparrot-devel.hint.svn-base
> /home/msoulier/temp/parrot/ports/cygwin/libparrot0.hint
> /home/msoulier/temp/parrot/ports/cygwin/libparrot-devel.hint
> /home/msoulier/temp/parrot/ports/debian/.svn/text-base/libparrot-dev.install.svn-base
> /home/msoulier/temp/parrot/ports/debian/.svn/text-base/libparrot.install.svn-base
> /home/msoulier/temp/parrot/ports/debian/.svn/text-base/libparrot-dev.dirs.svn-base
> /home/msoulier/temp/parrot/ports/debian/libparrot-dev.install
> /home/msoulier/temp/parrot/ports/debian/libparrot.install
> /home/msoulier/temp/parrot/ports/debian/libparrot-dev.dirs
> /home/msoulier/temp/parrot/t/steps/.svn/text-base/inter_libparrot-01.t.svn-base
> /home/msoulier/temp/parrot/t/steps/.svn/prop-base/inter_libparrot-01.t.svn-base
> /home/msoulier/temp/parrot/t/steps/inter_libparrot-01.t
> /home/msoulier/temp/parrot/config/inter/.svn/text-base/libparrot.pm.svn-base
> /home/msoulier/temp/parrot/config/inter/.svn/prop-base/libparrot.pm.svn-base
> /home/msoulier/temp/parrot/config/inter/libparrot.pm
> 
> > To be specific:  The first 'undefined reference' is to Parrot_new.  It
> > should be in src/embed.o and also in blib/lib/libparrot.so.  What do you
> > get for the following commands:
> > 
> > 	nm src/embed.o | grep 'Parrot_new$'
> > 	nm blib/lib/libparrot.so | grep 'Parrot_new$'
> 
> msoulier at tigger:~/temp/parrot$ nm src/embed.o | grep 'Parrot_new$'
> 00000000 T Parrot_new

Ok.  That's normal.

> msoulier at tigger:~/temp/parrot$ nm blib/lib/libparrot.so | grep 'Parrot_new$'
> 000defc0 t Parrot_new

That's not.  Look at the lower case 't'.  That means Parrot_new is not
a global symbol, but a local one.  I have no idea how that could have
happened.  It was fine in the original src/embed.o file, but somehow got
changed when you make blib/lib/libparrot.so.  I have no idea how.

I do note that you appear to be using an svn checkout, where before you
were using the 0.7.1 released version.  Perhaps there's something broken
in the checkout you have.  Or perhaps there's something not correctly
cleaned up.

The only thing I can think of is to start with a fresh copy and 
log the output of the 'make' command.  Then look at the command used to
build the blib/lib/libparrot.so library so we can try to figure out what
happened to the Parrot_new symbol in going from src/embed.o to
blib/lib/libparrot.so.

-- 
    Andy Dougherty		doughera at lafayette.edu


More information about the parrot-dev mailing list