- stable rust toolchains:
rustup toolchain install stable - nightly rust toolchains:
rustup toolchain install nightly --component rust-src - (if cross-compiling) rustup target:
rustup target add ${ARCH}-unknown-linux-musl - (if cross-compiling) LLVM: (e.g.)
brew install llvm(on macOS) - (if cross-compiling) C toolchain: (e.g.)
brew install filosottile/musl-cross/musl-cross(on macOS) - bpf-linker:
cargo install bpf-linker(--no-default-featureson macOS)
$ AYA_BUILD_EBPF=true cargo build --releaseor
$ makeCross compilation should work on both Intel and Apple Silicon Macs.
CC=${ARCH}-linux-musl-gcc cargo build --package c-fdleak --release \ --target=${ARCH}-unknown-linux-musl \ --config=target.${ARCH}-unknown-linux-musl.linker=\"${ARCH}-linux-musl-gcc\"The cross-compiled program target/${ARCH}-unknown-linux-musl/release/c-fdleak can be copied to a Linux server or VM and run there.
Usage: c-fdleak [OPTIONS] --pid <PID> Options: -p, --pid <PID> pid of the process -t, --timeout <TIMEOUT> timeout in seconds [default: 30] -o, --output <OUTPUT> output file [default: /tmp/fdleak.out] -v, --verbose verbose mode -h, --help Print help -V, --version Print version# ./target/release/c-fdleak --pid 5382Generating flame graphs:
# ./FlameGraph/flamegraph.pl /tmp/fdleak.out > /tmp/1.svg