Re: [PATCH] bpftool: Fix bootstrapping during a cross compilation

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

 



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>



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux