Hi Ilya, Thanks for your patch! I tried it but had problems with cross-compilation. Not sure if this is related to the patch or not though, I haven't had the time to follow up. Best Lorenz On Thu, 18 Jul 2019 at 15:20, Ilya Leoshkevich <iii@xxxxxxxxxxxxx> wrote: > > Hi Lorenz, > > I've been using the following patch for quite some time now. > Please let me know if it works for you. > > Best regards, > Ilya > > --- > > When OUTPUT is set, bpftool and libbpf put their objects into the same > directory, and since some of them have the same names, the collision > happens. > > Fix by invoking libbpf build in a manner similar to $(call descend) - > descend itself cannot be used, since libbpf is a sibling, and not a > child, of bpftool. > > Also, don't link bpftool with libbpf.a twice. > > Signed-off-by: Ilya Leoshkevich <iii@xxxxxxxxxxxxx> > --- > tools/bpf/bpftool/Makefile | 17 ++++++----------- > 1 file changed, 6 insertions(+), 11 deletions(-) > > diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile > index a7afea4dec47..2cbc3c166f44 100644 > --- a/tools/bpf/bpftool/Makefile > +++ b/tools/bpf/bpftool/Makefile > @@ -15,23 +15,18 @@ else > endif > > BPF_DIR = $(srctree)/tools/lib/bpf/ > - > -ifneq ($(OUTPUT),) > - BPF_PATH = $(OUTPUT) > -else > - BPF_PATH = $(BPF_DIR) > -endif > - > -LIBBPF = $(BPF_PATH)libbpf.a > +BPF_PATH = $(objtree)/tools/lib/bpf > +LIBBPF = $(BPF_PATH)/libbpf.a > > BPFTOOL_VERSION := $(shell make --no-print-directory -sC ../../.. kernelversion) > > $(LIBBPF): FORCE > - $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) $(OUTPUT)libbpf.a > + $(Q)mkdir -p $(BPF_PATH) > + $(Q)$(MAKE) $(COMMAND_O) subdir=tools/lib/bpf -C $(BPF_DIR) $(LIBBPF) > > $(LIBBPF)-clean: > $(call QUIET_CLEAN, libbpf) > - $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) clean >/dev/null > + $(Q)$(MAKE) $(COMMAND_O) subdir=tools/lib/bpf -C $(BPF_DIR) clean >/dev/null > > prefix ?= /usr/local > bash_compdir ?= /usr/share/bash-completion/completions > @@ -112,7 +107,7 @@ $(OUTPUT)disasm.o: $(srctree)/kernel/bpf/disasm.c > $(QUIET_CC)$(COMPILE.c) -MMD -o $@ $< > > $(OUTPUT)bpftool: $(OBJS) $(LIBBPF) > - $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) > + $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) > > $(OUTPUT)%.o: %.c > $(QUIET_CC)$(COMPILE.c) -MMD -o $@ $< > -- > 2.21.0 > -- Lorenz Bauer | Systems Engineer 6th Floor, County Hall/The Riverside Building, SE1 7PB, UK www.cloudflare.com