[sheepdog] [PATCH] sheepfs: add -lpthread to the linker option
Hitoshi Mitake
mitake.hitoshi at gmail.com
Wed Sep 25 16:52:28 CEST 2013
At Tue, 24 Sep 2013 16:39:43 +0800,
Liu Yuan wrote:
>
> On Tue, Sep 24, 2013 at 04:54:34PM +0900, MORITA Kazutaka wrote:
> > At Wed, 18 Sep 2013 01:03:27 +0900,
> > Hitoshi Mitake wrote:
> > >
> > > At Mon, 16 Sep 2013 10:43:24 +0800,
> > > Liu Yuan wrote:
> > > >
> > > > On Mon, Sep 16, 2013 at 02:09:46AM +0900, Hitoshi Mitake wrote:
> > > > > At Thu, 12 Sep 2013 10:58:51 +0800,
> > > > > Liu Yuan wrote:
> > > > > >
> > > > > > On Thu, Sep 12, 2013 at 01:38:38AM +0900, Hitoshi Mitake wrote:
> > > > > > > Because libsheepdog wraps pthread reader writer lock, the flag is
> > > > > > > required for building sheepfs too.
> > > > > > >
> > > > > > > Signed-off-by: Hitoshi Mitake <mitake.hitoshi at lab.ntt.co.jp>
> > > > > > > ---
> > > > > > > sheepfs/Makefile.am | 2 +-
> > > > > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > > >
> > > > > > > diff --git a/sheepfs/Makefile.am b/sheepfs/Makefile.am
> > > > > > > index 10b8c3b..1e571ae 100644
> > > > > > > --- a/sheepfs/Makefile.am
> > > > > > > +++ b/sheepfs/Makefile.am
> > > > > > > @@ -26,7 +26,7 @@ sbin_PROGRAMS = sheepfs
> > > > > > > sheepfs_SOURCES = core.c cluster.c vdi.c shadow_file.c volume.c node.c \
> > > > > > > config.c
> > > > > > >
> > > > > > > -sheepfs_LDADD = ../lib/libsheepdog.a $(fuse_LIBS) $(LIBS)
> > > > > > > +sheepfs_LDADD = ../lib/libsheepdog.a $(fuse_LIBS) $(LIBS) -lpthread
> > > > > > > sheepfs_DEPENDENCIES = ../lib/libsheepdog.a
> > > > > > >
> > > > > > > noinst_HEADERS = sheepfs.h
> > > > > >
> > > > > > What does this patch tries to fix? I can complie without problems for sheepfs on
> > > > > > my box. And you can't?
> > > > >
> > > > > I faced the build error during building sheepfs like this:
> > > > >
> > > > > CCLD sheepfs
> > > > > /usr/bin/ld: volume.o: undefined reference to symbol 'pthread_rwlock_wrlock@@GLIBC_2.2.5'
> > > > > /usr/bin/ld: note: 'pthread_rwlock_wrlock@@GLIBC_2.2.5' is defined in DSO /lib/x86_64-linux-gnu/libpthread.so.0 so try adding it to the linker command line
> > > > > /lib/x86_64-linux-gnu/libpthread.so.0: could not read symbols: Invalid operation
> > > > > collect2: error: ld returned 1 exit status
> > > > > make[1]: *** [sheepfs] Error 1
> > > > >
> > > > > My environment is Ubuntu 13.04. But I could build sheepfs successfully
> > > > > on my debian box. I'll seek the root cause of this error and report
> > > > > later. Please ignore this patch now, sorry.
> > > > >
> > > >
> > > > Probably better fix should go add -lpthread in lib/Makefile.am then dog, sheep
> > > > and others include sheepfs won't need to addit manually.
> > >
> > > OK, I'll refine it and resend tomorrow.
> >
> > Any progress on this? I upgraded my ubuntu to 13.04 too, and I cannot
> > even compile without this patch.
> >
> > Yuan, how about merging this patch for now, and improving dependency
> > later?
>
> Fine for me
Sorry for my late response. I think current patch would be better.
Because transforming libsheepdog from ar archive to shared library
would be costly and current tiny patch can do the same thing.
Thanks,
Hitoshi
More information about the sheepdog
mailing list