系統環境
wsl debian11
目標環境
arm64 musl 即 aarch64-linux-musl (小愛音箱pro的系統就是基於openwrt,對應的平臺就是這個)
步驟
安裝target
rustup target install aarch64-unknown-linux-musl
下載musl toolchain
從musl.cc可以輕易找到對應平臺的toolchain
我的目標平臺是aarch64-linux-musl,從首頁進去往下拉第一個tgz文件就是aarch64-linux-musl-cross.tgz
下載下來解壓到/opt下,並把其bin目錄加入到當前用戶的PATH環境變量中
wget https://musl.cc/aarch64-linux-musl-cross.tgz
sudo tar -xvf aarch64-linux-musl-cross.tgz -C /opt/
echo 'PATH=/opt/aarch64-linux-musl-cross/bin/:$PATH' >> ~/.bashrc
source ~/.bashrc
增加cargo配置
修改~/.cargo/config
,增加對應平臺的linker
nano ~/.cargo/config
config內容如下,前source.crates-io和source.sjtu是配置cargo鏡像源,已經配置了的可以不加。最後兩行就是對應平臺的配置
[source.crates-io]
replace-with = 'sjtu'
[source.sjtu]
registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index"
[target.aarch64-unknown-linux-musl]
linker = "aarch64-linux-musl-ld"
然後就可以執行對應平臺的編譯命令了
cargo build --release --target aarch64-unknown-linux-musl
參考文獻:rust 交叉編譯樹莓派程序