Makefile (1289B)
1 ARCH=$(shell uname -m | sed 's/x86_64/x86/' | sed 's/aarch64/arm64/') 2 3 # set this variable (e.g. to 1) if you have older libbpf version (<0.6.0) 4 SET_OLD_LIBBPF?=0 5 6 ifdef SET_OLD_LIBBPF 7 OLD_LIBBPF=-DOLD_LIBBPF 8 endif 9 10 main: main.c process_exit.skel.h 11 gcc $(OLD_LIBBPF) -Wall -o main main.c -lbpf -lelf -lz 12 13 run: main 14 sudo ./main 15 16 KERNEL ?= /lib/modules/$(shell uname -r)/build/ 17 LINUXINCLUDE += -I$(KERNEL)/arch/$(ARCH)/include/generated/uapi 18 LINUXINCLUDE += -I$(KERNEL)/arch/$(ARCH)/include/generated 19 LINUXINCLUDE += -I$(KERNEL)/arch/$(ARCH)/include 20 LINUXINCLUDE += -I$(KERNEL)/arch/$(ARCH)/include/uapi 21 LINUXINCLUDE += -I$(KERNEL)/include 22 LINUXINCLUDE += -I$(KERNEL)/include/uapi 23 LINUXINCLUDE += -include $(KERNEL)/include/linux/kconfig.h 24 LINUXINCLUDE += -I$(KERNEL)/include/generated/uapi 25 26 process_exit.bpf.o: process_exit.bpf.c vmlinux.h 27 clang $(LINUXINCLUDE) \ 28 -target bpf \ 29 -D __TARGET_ARCH_$(ARCH) \ 30 -I/usr/include/$(shell uname -m)-linux-gnu \ 31 -Wall -O2 -g -c process_exit.bpf.c -o process_exit.bpf.o 32 33 process_exit.skel.h: process_exit.bpf.o 34 bpftool gen skeleton process_exit.bpf.o > process_exit.skel.h 35 36 vmlinux.h: 37 bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h 38 39 clean: 40 rm -f process_exit.bpf.o main vmlinux.h process_exit.skel.h 41 42 .PHONY: run clean