Aya Cross-Dev-Env for aarch64
- ebpf aya
Anything
最近想试试 Ebpf ,于是想着 Rust 的工具链会相对好用也比较齐全,实际上并没有想象的那么轻松。尤其是在 Mac 上编译,困难重重。
主要的问题一个是 Macos 本身并不支持 Ebpf 所以他没有那些 Ebpf 的 libc 头文件,在 crate::libc
中,就会缺少定义,代码提示就会出问题,链接也会出问题。安装官方文档配置了相应的环境,还是编译不过。索性放弃了,选择装了个虚拟机来编译,就没什么问题了。
For Ubuntu x86_64
- Install RustIF DOWNLOAD VERY SLOW TRY:
rustup install stable rustup toolchain install nightly --component rust-src cargo install bpf-linker cargo install cargo-generate
export RUSTUP_DIST_SERVER="https://rsproxy.cn" export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"
- Install musl-tools
curl -s musl.cc | grep aarch64 wget https://musl.cc/aarch64-linux-musl-cross.tgz tar -zxvf aarch64-linux-musl-cross.tgz # ADD IT TO YOUR PATH # eg. export PATH=${PATH}:/repalce/with/your/unzip_path/aarch64-linux-musl-cross/bin
- Build Test
cargo generate --name myapp -d program_type=xdp https://github.com/aya-rs/aya-template cd myapp export ARCH=aarch64 cargo build --package myapp --release --target=${ARCH}-unknown-linux-musl --config=target.${ARCH}-unknown-linux-musl.linker=\"${ARCH}-linux-musl-gcc\"
- If you want to make “–config” global
printf "[target.aarch64-unknown-linux-musl]\n" >> ~/.cargo/config.toml printf 'linker = "aarch64-linux-musl-gcc"\n' >> ~/.cargo/config.toml
For Macos M chip
- Try Official Steps refer: https://aya-rs.dev/book/start/development/
If things went wrong and YOU CAN NOT FIGURE IT OUT:
Install a ubuntu vm \ ubuntu docker image
Repeat Steps Mentioned Before
YOU WILL BE FINE