2019-11-28 17:07 UTC+0100 ~ Toke Høiland-Jørgensen <toke@xxxxxxxxxx> > From: Jiri Olsa <jolsa@xxxxxxxxxx> > > Currently we support only static linking with kernel's libbpf > (tools/lib/bpf). This patch adds LIBBPF_DYNAMIC compile variable > that triggers libbpf detection and bpf dynamic linking: > > $ make -C tools/bpf/bpftool make LIBBPF_DYNAMIC=1 > > If libbpf is not installed, build (with LIBBPF_DYNAMIC=1) stops with: > > $ make -C tools/bpf/bpftool LIBBPF_DYNAMIC=1 > Auto-detecting system features: > ... libbfd: [ on ] > ... disassembler-four-args: [ on ] > ... zlib: [ on ] > ... libbpf: [ OFF ] > > Makefile:102: *** Error: No libbpf devel library found, please install libbpf-devel or libbpf-dev. > > Adding LIBBPF_DIR compile variable to allow linking with > libbpf installed into specific directory: > > $ make -C tools/lib/bpf/ prefix=/tmp/libbpf/ install_lib install_headers > $ make -C tools/bpf/bpftool/ LIBBPF_DYNAMIC=1 LIBBPF_DIR=/tmp/libbpf/ > > It might be needed to clean build tree first because features > framework does not detect the change properly: > > $ make -C tools/build/feature clean > $ make -C tools/bpf/bpftool/ clean > > Since bpftool uses bits of libbpf that are not exported as public API in > the .so version, we also pass in libbpf.a to the linker, which allows it to > pick up the private functions from the static library without having to > expose them as ABI. > > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx> > Signed-off-by: Toke Høiland-Jørgensen <toke@xxxxxxxxxx> > --- > v3: > - Keep $(LIBBPF) in $LIBS, and just add -lbpf on top > - Fix typo in error message > v2: > - Pass .a file to linker when dynamically linking, so bpftool can use > private functions from libbpf without exposing them as API. Thanks for the changes! Reviewed-by: Quentin Monnet <quentin.monnet@xxxxxxxxxxxxx>