Как я могу получить заголовочный файл 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
Другие вопросы по тегам