127 lines
3.2 KiB
Markdown
127 lines
3.2 KiB
Markdown
|
bpftool
|
||
|
=======
|
||
|
|
||
|
This is a mirror of [bpf-next Linux source tree's
|
||
|
`tools/bpf/bpftool`](https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/tree/tools/bpf/bpftool)
|
||
|
directory, plus its few dependencies from under `kernel/bpf/`, and its
|
||
|
supporting header files.
|
||
|
|
||
|
All the gory details of syncing can be found in `scripts/sync-kernel.sh`
|
||
|
script.
|
||
|
|
||
|
Some header files in this repo (`include/linux/*.h`) are reduced versions of
|
||
|
their counterpart files at
|
||
|
[bpf-next](https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/)'s
|
||
|
`tools/include/linux/*.h` to make compilation successful.
|
||
|
|
||
|
BPF/bpftool usage and questions
|
||
|
-------------------------------
|
||
|
|
||
|
Please check out [the manual pages](docs) for documentation about bpftool. A
|
||
|
number of example invocations are also displayed in [this blog
|
||
|
post](https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/tree/tools/bpf/bpftool).
|
||
|
|
||
|
All general BPF questions, including kernel functionality, bpftool features and
|
||
|
usage, should be sent to bpf@vger.kernel.org mailing list. You can subscribe to
|
||
|
it [here](http://vger.kernel.org/vger-lists.html#bpf) and search its archive
|
||
|
[here](https://lore.kernel.org/bpf/). Please search the archive before asking
|
||
|
new questions. It very well might be that this was already addressed or
|
||
|
answered before.
|
||
|
|
||
|
bpf@vger.kernel.org is monitored by many more people and they will happily try
|
||
|
to help you with whatever issue you have. This repository's PRs and issues
|
||
|
should be opened only for dealing with issues pertaining to specific way this
|
||
|
bpftool mirror repo is set up and organized.
|
||
|
|
||
|
Dependencies
|
||
|
------------
|
||
|
|
||
|
Required:
|
||
|
|
||
|
- libelf
|
||
|
- zlib
|
||
|
|
||
|
Optional:
|
||
|
|
||
|
- libbfd (for dumping JIT-compiled program instructions)
|
||
|
- libcap (for better feature probing)
|
||
|
- kernel BTF information (for profiling programs or showing PIDs of processes
|
||
|
referencing BPF objects)
|
||
|
- clang/LLVM (idem)
|
||
|
|
||
|
Build
|
||
|
[](https://github.com/libbpf/bpftool/actions/workflows/build.yaml)
|
||
|
-----
|
||
|
|
||
|
### Initialize libbpf submodule
|
||
|
|
||
|
This repository uses libbpf as a submodule. You can initialize it when cloning
|
||
|
bpftool:
|
||
|
|
||
|
```console
|
||
|
$ git clone --recurse-submodules https://github.com/libbpf/bpftool.git
|
||
|
```
|
||
|
|
||
|
Alternatively, if you have already cloned the repository, you can initialize
|
||
|
the submodule by running the following command from within the repository:
|
||
|
|
||
|
```console
|
||
|
$ git submodule update --init
|
||
|
```
|
||
|
|
||
|
### Build bpftool
|
||
|
|
||
|
To build bpftool:
|
||
|
|
||
|
```console
|
||
|
$ cd src
|
||
|
$ make
|
||
|
```
|
||
|
|
||
|
To build and install bpftool on the system:
|
||
|
|
||
|
```console
|
||
|
$ cd src
|
||
|
# make install
|
||
|
```
|
||
|
|
||
|
Building bpftool in a separate directory is supported via the `OUTPUT` variable:
|
||
|
|
||
|
```console
|
||
|
$ mkdir /tmp/bpftool
|
||
|
$ cd src
|
||
|
$ OUTPUT=/tmp/bpftool make
|
||
|
```
|
||
|
|
||
|
Most of the output is suppressed by default, but detailed building logs can be
|
||
|
displayed by passing `V=1`:
|
||
|
|
||
|
```console
|
||
|
$ cd src
|
||
|
$ make V=1
|
||
|
```
|
||
|
|
||
|
### Build bpftool's man pages
|
||
|
|
||
|
The man pages for bpftool can be built with:
|
||
|
|
||
|
```console
|
||
|
$ cd docs
|
||
|
$ make
|
||
|
```
|
||
|
|
||
|
They can be installed on the system with:
|
||
|
|
||
|
```console
|
||
|
$ cd docs
|
||
|
# make install
|
||
|
```
|
||
|
|
||
|
License
|
||
|
-------
|
||
|
|
||
|
This work is dual-licensed under the GNU GPL v2.0 (only) license and the
|
||
|
BSD 2-clause license. You can choose between one of them if you use this work.
|
||
|
|
||
|
`SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)`
|