Re: [PATCH] spaceman: Add missing link to libuuid

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Sep 06, 2017 at 09:11:11PM -0700, Khem Raj wrote:
> On Wed, Sep 6, 2017 at 7:40 PM, Dave Chinner <david@xxxxxxxxxxxxx> wrote:
> > On Wed, Sep 06, 2017 at 07:19:00PM -0700, Khem Raj wrote:
> >> When uuid is enabled then we see linking failures with gold linker e.g.
> >>
> >> libxfs/.libs/libxfs.so: error: undefined reference to 'uuid_compare'
> >> libxfs/.libs/libxfs.so: error: undefined reference to 'uuid_copy'
> >> clang-5.0: error: linker command failed with exit code 1 (use -v to see invocation)
> >
> > That's libxfs, not xfs_spaceman....
> 
> yes its libxfs but its linking spaceman, I chopped the error logs too
> much I guess.

xfs_spaceman does not link against libuuid:

$ ldd spaceman/xfs_spaceman 
	linux-vdso.so.1 (0x00007ffca4f68000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa36f358000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fa36f6f7000)

Nor libxfs - if it linked against libxfs, it would have to pull in
4 other libraries, including libuuid:

$ ldd repair/xfs_repair 
	linux-vdso.so.1 (0x00007ffd96bb4000)
	libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f5da2d4f000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f5da2b47000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5da292a000)
	libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007f5da26e4000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5da2345000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f5da2f54000)

So whatever build error you are having has nothing to do with
xfs_spaceman. Have you installed all the necessary libraries?

> >> Signed-off-by: Khem Raj <raj.khem@xxxxxxxxx>
> >> ---
> >>  spaceman/Makefile | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/spaceman/Makefile b/spaceman/Makefile
> >> index 95ec3c0..060e0af 100644
> >> --- a/spaceman/Makefile
> >> +++ b/spaceman/Makefile
> >> @@ -9,7 +9,7 @@ LTCOMMAND = xfs_spaceman
> >>  HFILES = init.h space.h
> >>  CFILES = init.c file.c prealloc.c trim.c
> >>
> >> -LLDLIBS = $(LIBXCMD)
> >> +LLDLIBS = $(LIBXCMD) $(LIBUUID)
> >
> > And spaceman doesn't link against libxfs, nor does libxcmd or
> > spaceman use uuids so I don't see why this fixes a problem with
> > libxfs...
> 
> I was just following what other binaries were doing, otherwise I agree
> libuuid should appear in DT_NEEDED flags in libxfs.so so linkers can
> pull it in automatically.
> 
> try using
> 
> LDFLAGS = "-fuse-ld=gold" if you want to reproduce the problem on your end.

$ gold -V
GNU gold (GNU Binutils for Debian 2.29) 1.14
$ make distclean
....
$ LDFLAGS="-fuse-ld=gold" make -j8 Q=
....
[LD]     xfs_spaceman
/bin/bash ../libtool --quiet --tag=CC --mode=link gcc -o xfs_spaceman -fuse-ld=gold -fuse-ld=gold  -fuse-ld=gold  -fuse-ld=gold -static  init.o file.o prealloc.o trim.o freesp.o   ../libxcmd/libxcmd.la
.....
$ ldd spaceman/xfs_spaceman 
	linux-vdso.so.1 (0x00007ffc943e4000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2def2e2000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f2def681000)

TOT builds just fine here on debian unstable using the gold linker,
and again this shows that spaceman does not link against libuuid.

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux