Re: [PATCH] perf tools: support static build

From: Michael S. Tsirkin
Date: Sun Nov 22 2009 - 06:42:47 EST


On Sun, Nov 22, 2009 at 01:27:27PM +0200, Michael S. Tsirkin wrote:
> On Tue, Nov 17, 2009 at 10:23:31AM +0100, Ingo Molnar wrote:
> >
> > * Ingo Molnar <mingo@xxxxxxx> wrote:
> >
> > > * Michael S. Tsirkin <mst@xxxxxxxxxx> wrote:
> > >
> > > > This makes it possible to build perf statically, by performing make
> > > > LDFLAGS=-static
> > > >
> > > > Since static libraries are only searched in the order they are
> > > > specified, move library list from LDFLAGS to EXTLIBS, so that they are
> > > > put at the end of linker command line.
> > > >
> > > > Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx>
> > > > ---
> > > >
> > > > Changes in v2: updated to latest tip.
> > >
> > > The Makefile changed again so your v2 patch is conflicting too - mind
> > > updating it to latest -tip?
> >
> > i've applied your patch to latest -tip and resolved the conflicts
> > manually. Normal build works, but static one does not yet:
> >
> > aldebaran:~/linux/linux/tools/perf> make -j LDFLAGS=-static
> > Makefile:484: *** No libelf.h/libelf found, please install
> > libelf-dev/elfutils-libelf-devel and glibc-dev[el]. Stop.
> >
> > mind double checking my changes in
> >
> > http://people.redhat.com/mingo/tip.git/README
> >
> > Thanks,
> >
> > Ingo
>
> Looking at it.
> For now, here's a patch that shows what went
> wrong with configure.

Seems to work fine here on a 32 bit Fedora,
provided that I supply NO_64BIT (my kernel
is 64 bit with 32 bit userspace).

So this worked for me:
[perf]$ $make -s -j LDFLAGS=-static NO_64BIT=yes
Makefile:498: No libdwarf.h found or old libdwarf.h found, disables dwarf support. Please install libdwarf-dev/libdwarf-devel >= 20081231
PERF_VERSION = 0.0.2.PERF
Makefile:498: No libdwarf.h found or old libdwarf.h found, disables dwarf support. Please install libdwarf-dev/libdwarf-devel >= 20081231
* new build flags or prefix
/usr/lib/gcc/i586-redhat-linux/4.4.1/../../../libpthread.a(libpthread.o): In function `sem_open':
(.text+0x69ea): warning: the use of `mktemp' is dangerous, better use `mkstemp'
[perf]$ ldd perf
not a dynamic executable

Ingo, could you please apply my debugging patch and then run with V=2?

Btw, why is it a good idea to force 64/32 bit mode?
Why not use the default gcc mode?

--
MST
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/