2022-06-08 14:29 UTC+0000 ~ Shahab Vahedi <Shahab.Vahedi@xxxxxxxxxxxx> > This change adjusts the Makefile to use "HOSTAR" as the archive tool > to keep the sanity of the build process for the bootstrap part in > check. For the rationale, please continue reading. > > When cross compiling bpftool with buildroot, it leads to an invocation > like: > > $ AR="/path/to/buildroot/host/bin/arc-linux-gcc-ar" \ > CC="/path/to/buildroot/host/bin/arc-linux-gcc" \ > ... > make > > Which in return fails while building the bootstrap section: > > ----------------------------------8<---------------------------------- > > make: Entering directory '/src/bpftool-v6.7.0/src' > ... libbfd: [ on ] > ... disassembler-four-args: [ on ] > ... zlib: [ on ] > ... libcap: [ OFF ] > ... clang-bpf-co-re: [ on ] <-- triggers bootstrap > > . > . > . > > LINK /src/bpftool-v6.7.0/src/bootstrap/bpftool > /usr/bin/ld: /src/bpftool-v6.7.0/src/bootstrap/libbpf/libbpf.a: > error adding symbols: archive has no index; run ranlib > to add one > collect2: error: ld returned 1 exit status > make: *** [Makefile:211: /src/bpftool-v6.7.0/src/bootstrap/bpftool] > Error 1 > make: *** Waiting for unfinished jobs.... > AR /src/bpftool-v6.7.0/src/libbpf/libbpf.a > make[1]: Leaving directory '/src/bpftool-v6.7.0/libbpf/src' > make: Leaving directory '/src/bpftool-v6.7.0/src' > > ---------------------------------->8---------------------------------- > > This occurs because setting "AR" confuses the build process for the > bootstrap section and it calls "arc-linux-gcc-ar" to create and index > "libbpf.a" instead of the host "ar". > > Signed-off-by: Shahab Vahedi <shahab@xxxxxxxxxxxx> > --- > tools/bpf/bpftool/Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile > index c6d2c77d0252..c19e0e4c41bd 100644 > --- a/tools/bpf/bpftool/Makefile > +++ b/tools/bpf/bpftool/Makefile > @@ -53,7 +53,7 @@ $(LIBBPF_INTERNAL_HDRS): $(LIBBPF_HDRS_DIR)/%.h: $(BPF_DIR)/%.h | $(LIBBPF_HDRS_ > $(LIBBPF_BOOTSTRAP): $(wildcard $(BPF_DIR)/*.[ch] $(BPF_DIR)/Makefile) | $(LIBBPF_BOOTSTRAP_OUTPUT) > $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(LIBBPF_BOOTSTRAP_OUTPUT) \ > DESTDIR=$(LIBBPF_BOOTSTRAP_DESTDIR:/=) prefix= \ > - ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) $@ install_headers > + ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) AR=$(HOSTAR) $@ install_headers > > $(LIBBPF_BOOTSTRAP_INTERNAL_HDRS): $(LIBBPF_BOOTSTRAP_HDRS_DIR)/%.h: $(BPF_DIR)/%.h | $(LIBBPF_BOOTSTRAP_HDRS_DIR) > $(call QUIET_INSTALL, $@) +Cc Jean-Philippe Looks good to me, thank you! Reviewed-by: Quentin Monnet <quentin@xxxxxxxxxxxxx>