mirror of
https://github.com/netdata/libbpf.git
synced 2026-03-23 01:39:06 +08:00
Merge pull request #23 from bluca/pkgconfig-elf
build shared library by default and use pkg-config to get libelf flags
This commit is contained in:
19
README
19
README
@@ -19,14 +19,27 @@ successful.
|
||||
|
||||
Build
|
||||
=====
|
||||
libelf is an internal dependency of libbpf and thus it is required to link
|
||||
against and must be installed on the system for applications to work.
|
||||
pkg-config is used by default to find libelf, and the program called can be
|
||||
overridden with PKG_CONFIG.
|
||||
If using pkg-config at build time is not desired, it can be disabled by setting
|
||||
NO_PKG_CONFIG=1 when calling make.
|
||||
|
||||
To build static library libbpf.a:
|
||||
To build both static libbpf.a and shared libbpf.so:
|
||||
cd src
|
||||
make
|
||||
|
||||
To build both static libbpf.a and shared libbpf.so libraries in directory
|
||||
To build only static libbpf.a library in directory
|
||||
build/ and install them together with libbpf headers in a staging directory
|
||||
root/:
|
||||
cd src
|
||||
mkdir build root
|
||||
BUILD_SHARED=y OBJDIR=build DESTDIR=root make install
|
||||
BUILD_STATIC_ONLY=y OBJDIR=build DESTDIR=root make install
|
||||
|
||||
To build both static libbpf.a and shared libbpf.so against a custom libelf
|
||||
dependency installed in /build/root/ and install them together with libbpf
|
||||
headers in a build directory /build/root/:
|
||||
|
||||
cd src
|
||||
PKG_CONFIG_PATH=/build/root/lib64/pkgconfig DESTDIR=/build/root make install
|
||||
|
||||
14
src/Makefile
14
src/Makefile
@@ -10,12 +10,20 @@ ifneq ($(FEATURE_REALLOCARRAY),)
|
||||
ALL_CFLAGS += -DCOMPAT_NEED_REALLOCARRAY
|
||||
endif
|
||||
|
||||
ifdef BUILD_SHARED
|
||||
ifndef BUILD_STATIC_ONLY
|
||||
ALL_CFLAGS += -fPIC -fvisibility=hidden
|
||||
endif
|
||||
|
||||
CFLAGS ?= -g -O2 -Werror -Wall
|
||||
ALL_CFLAGS += $(CFLAGS)
|
||||
ALL_LDFLAGS += $(LDFLAGS)
|
||||
ifdef NO_PKG_CONFIG
|
||||
ALL_LDFLAGS += -lelf
|
||||
else
|
||||
PKG_CONFIG ?= pkg-config
|
||||
ALL_CFLAGS += $(shell $(PKG_CONFIG) --cflags libelf)
|
||||
ALL_LDFLAGS += $(shell $(PKG_CONFIG) --libs libelf)
|
||||
endif
|
||||
|
||||
OBJDIR ?= .
|
||||
|
||||
@@ -23,7 +31,7 @@ OBJS := $(addprefix $(OBJDIR)/,bpf.o btf.o libbpf.o libbpf_errno.o netlink.o \
|
||||
nlattr.o str_error.o libbpf_probes.o bpf_prog_linfo.o xsk.o)
|
||||
|
||||
LIBS := $(OBJDIR)/libbpf.a
|
||||
ifdef BUILD_SHARED
|
||||
ifndef BUILD_STATIC_ONLY
|
||||
LIBS += $(OBJDIR)/libbpf.so
|
||||
endif
|
||||
|
||||
@@ -54,7 +62,7 @@ $(OBJDIR)/libbpf.a: $(OBJS)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(OBJDIR)/libbpf.so: $(OBJS)
|
||||
$(CC) -shared $(LDFLAGS) $^ -o $@
|
||||
$(CC) -shared $(ALL_LDFLAGS) $^ -o $@
|
||||
|
||||
$(OBJDIR)/libbpf.pc:
|
||||
sed -e "s|@PREFIX@|$(PREFIX)|" \
|
||||
|
||||
Reference in New Issue
Block a user