Closed wkneewalden closed 3 months ago
You are trying to build a static binary, but you do not have libelf.a
:
/usr/bin/ld: cannot find -lelf: No such file or directory
You need to either install libelf.a
on your host or build a dynamically linked binary with make build-dynamic
.
Thanks! I tried make build-dynamic
and build completed, same with examples build using make -C examples clean build
. However logs indicate error when exporter runs:
/home/ec2-user/ebpf_exporter/ebpf_exporter: error while loading shared libraries: libbpf.so.1: cannot open shared object file: No such file or directory
ebpf_exporter.service: Main process exited, code=exited, status=127/n/a
Guessing that make build-dynamic BUILD_LIBBPF=0
is required then? There are libraries existing:
./usr/include/bpf/libbpf.h
./usr/include/bpf/libbpf_common.h
./usr/include/bpf/libbpf_legacy.h
./usr/include/bpf/libbpf_version.h
./home/ec2-user/ebpf_exporter/libbpf
./home/ec2-user/ebpf_exporter/libbpf/assets/libbpf-logo-compact-darkbg.png
./home/ec2-user/ebpf_exporter/libbpf/assets/libbpf-logo-compact-mono.png
./home/ec2-user/ebpf_exporter/libbpf/assets/libbpf-logo-compact.png
./home/ec2-user/ebpf_exporter/libbpf/assets/libbpf-logo-sideways-darkbg.png
./home/ec2-user/ebpf_exporter/libbpf/assets/libbpf-logo-sideways-mono.png
./home/ec2-user/ebpf_exporter/libbpf/assets/libbpf-logo-sideways.png
./home/ec2-user/ebpf_exporter/libbpf/assets/libbpf-logo-sparse-darkbg.png
./home/ec2-user/ebpf_exporter/libbpf/assets/libbpf-logo-sparse-mono.png
./home/ec2-user/ebpf_exporter/libbpf/assets/libbpf-logo-sparse.png
./home/ec2-user/ebpf_exporter/libbpf/docs/libbpf_build.rst
./home/ec2-user/ebpf_exporter/libbpf/docs/libbpf_naming_convention.rst
./home/ec2-user/ebpf_exporter/libbpf/docs/libbpf_overview.rst
./home/ec2-user/ebpf_exporter/libbpf/src/libbpf.c
./home/ec2-user/ebpf_exporter/libbpf/src/libbpf.h
./home/ec2-user/ebpf_exporter/libbpf/src/libbpf.map
./home/ec2-user/ebpf_exporter/libbpf/src/libbpf.pc.template
./home/ec2-user/ebpf_exporter/libbpf/src/libbpf_common.h
./home/ec2-user/ebpf_exporter/libbpf/src/libbpf_errno.c
./home/ec2-user/ebpf_exporter/libbpf/src/libbpf_internal.h
./home/ec2-user/ebpf_exporter/libbpf/src/libbpf_legacy.h
./home/ec2-user/ebpf_exporter/libbpf/src/libbpf_probes.c
./home/ec2-user/ebpf_exporter/libbpf/src/libbpf_version.h
./home/ec2-user/ebpf_exporter/libbpf/src/staticobjs/libbpf.o
./home/ec2-user/ebpf_exporter/libbpf/src/staticobjs/libbpf_errno.o
./home/ec2-user/ebpf_exporter/libbpf/src/staticobjs/libbpf_probes.o
./home/ec2-user/ebpf_exporter/libbpf/src/libbpf.a
./home/ec2-user/ebpf_exporter/libbpf/src/sharedobjs/libbpf.o
./home/ec2-user/ebpf_exporter/libbpf/src/sharedobjs/libbpf_errno.o
./home/ec2-user/ebpf_exporter/libbpf/src/sharedobjs/libbpf_probes.o
./home/ec2-user/ebpf_exporter/libbpf/src/libbpf.so.1.3.0
./home/ec2-user/ebpf_exporter/libbpf/src/libbpf.so.1
./home/ec2-user/ebpf_exporter/libbpf/src/libbpf.so
./home/ec2-user/ebpf_exporter/libbpf/src/libbpf.pc
./home/ec2-user/ebpf_exporter/libbpf/dest/usr/include/bpf/libbpf.h
./home/ec2-user/ebpf_exporter/libbpf/dest/usr/include/bpf/libbpf_common.h
./home/ec2-user/ebpf_exporter/libbpf/dest/usr/include/bpf/libbpf_legacy.h
./home/ec2-user/ebpf_exporter/libbpf/dest/usr/include/bpf/libbpf_version.h
./home/ec2-user/ebpf_exporter/libbpf/dest/usr/lib/pkgconfig/libbpf.pc
./home/ec2-user/ebpf_exporter/libbpf/dest/usr/lib/libbpf.a
./home/ec2-user/ebpf_exporter/libbpf/dest/usr/lib/libbpf.so
./home/ec2-user/ebpf_exporter/libbpf/dest/usr/lib/libbpf.so.1
./home/ec2-user/ebpf_exporter/libbpf/dest/usr/lib/libbpf.so.1.3.0
./root/go/pkg/mod/cache/download/github.com/aquasecurity/libbpfgo
./root/go/pkg/mod/github.com/aquasecurity/libbpfgo@v0.6.0-libbpf-1.3
./root/go/pkg/mod/github.com/aquasecurity/libbpfgo@v0.6.0-libbpf-1.3/libbpf_cb.go
./root/go/pkg/mod/github.com/aquasecurity/libbpfgo@v0.6.0-libbpf-1.3/libbpfgo.c
./root/go/pkg/mod/github.com/aquasecurity/libbpfgo@v0.6.0-libbpf-1.3/libbpfgo.go
./root/go/pkg/mod/github.com/aquasecurity/libbpfgo@v0.6.0-libbpf-1.3/libbpfgo.h
./root/go/pkg/mod/github.com/aquasecurity/libbpfgo@v0.6.0-libbpf-1.3/selftest/build/libbpfgo_test.bpf.c
./root/go/pkg/mod/github.com/iovisor/gobpf@v0.2.0/elf/include/libbpf.h
You need to set LD_LIBRARY_PATH
to where your libbpf.so.1
is (libbpf/src/
in the build dir) or you need to install libbpf on your system.
BUILD_LIBBPF=0
might also work.
Thanks a lot! Assigning LD_LIBRARY_PATH resolved issue.
Also mentioning that v2.4.1 fixed issue with PCI ID error on start up in Amazon Linux distros. https://github.com/cloudflare/ebpf_exporter/issues/377
Attempted build for EBPF v2.4.1 on Amazon Linux 2023 with following commands including prereqs (go > 1.20):
Did not include 'elfutils-libelf-devel-static' in prereq list as this is not included in Amazon Linux 2023, but it was in Amazon Linux 2 where build worked. However, in Amazon Linux 2023 after prereq installs above can see libelf here:
Build attempt resulted in this error related to missing -lelf: