rustup toolchain install stable
rustup toolchain install nightly --component rust-src
rustup target add ${ARCH}-unknown-linux-musl
brew install llvm
(on macOS)brew install filosottile/musl-cross/musl-cross
(on macOS)cargo install bpf-linker
(--no-default-features
on macOS)Use cargo build
, cargo check
, etc. as normal. Run your program with:
cargo run --release --config 'target."cfg(all())".runner="sudo -E"'
Cargo build scripts are used to automatically build the eBPF correctly and include it in the program.
Cross compilation should work on both Intel and Apple Silicon Macs.
CC=${ARCH}-linux-musl-gcc cargo build --package {{project-name}} --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/{{project-name}}
can be
copied to a Linux server or VM and run there.