Как я могу получить заголовочный файл bpf_helpers.h для моего ядра Linux?
Я занимаюсь разработкой программы eBPF на машине с Ubuntu:
$ uname -a
Linux ubuntu-bionic 4.18.0-16-generic #17~18.04.1-Ubuntu SMP Tue Feb 12 13:35:51 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Для этого мне нужны оба bpf.h
для ряда определений, а также bpf_helpers.h
для определения вспомогательных функций. Я установил новое ядро с заголовками:
apt-get update -y
apt-get install -y linux-image-4.18.0-16-generic linux-headers-4.18.0-16-generic
Заголовки включают bpf.h
:
$ find /usr/src/linux-headers-4.18.0-16 -name bpf.h
/usr/src/linux-headers-4.18.0-16/include/uapi/linux/bpf.h
/usr/src/linux-headers-4.18.0-16/include/linux/bpf.h
но нет bpf_helpers.h
:
$ find /usr/src/linux-headers-4.18.0-16 -name bpf_helpers.h
Как я могу получить этот файл для своего ядра и почему он не включен в заголовки дистрибутива?
Я мог бы проверить конкретную версию ядра Linux или получить файл от master, но в дистрибутиве могли быть внесены изменения в апстрим, что делает это неудобным для меня.
2 ответа
Решение
bpf_helpers.h
не распространяется с заголовками ядра. Как предложено agg3l в комментариях, вы можете скопировать его из пакета linux-source в Ubuntu.
В Ubuntu я установил libbpf-dev, чтобы получить этот заголовок:
sudo apt-get install libbpf-dev
$ apt-file list libbpf-dev | grep bpf_helpers.h
libbpf-dev: /usr/include/bpf/bpf_helpers.h