x86_64-unknown-linux-musl & aarch64-unknown-linux-musl
使用filosottile/musl-cross/musl-cross
brew install filosottile/musl-cross/musl-cross
cargo build --release --target x86_64-unknown-linux-musl
cargo build --release --target aarch64-unknown-linux-musl
arm-unknown-linux-musleabihf & armv7-unknown-linux-musleabihf
使用 homebrew 安装llvm (LLVM Clang 不是 Apple Clang)
brew install llvm
配置环境
export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
export LDFLAGS="-L/opt/homebrew/opt/llvm/lib"
export CPPFLAGS="-I/opt/homebrew/opt/llvm/include"
export TARGET_CC=$(which clang)
安装 Linker
brew install arm-linux-gnueabihf-binutils
Build
cargo build --release --target arm-unknown-linux-musleabihf
cargo build --release --target armv7-unknown-linux-musleabihf
最终汇总成一个脚本
#!/bin/bash
# 设置目标架构
TARGETS=(
"x86_64-unknown-linux-musl"
"aarch64-unknown-linux-musl"
"arm-unknown-linux-musleabihf"
"armv7-unknown-linux-musleabihf"
)
# 创建以当前日期命名的输出目录
CURRENT_DATE=$(date +"%Y-%m-%d_%H-%M-%S")
OUTPUT_DIR="release_builds_$CURRENT_DATE"
mkdir -p $OUTPUT_DIR
# 安装必要的工具
brew install filosottile/musl-cross/musl-cross
brew install llvm
brew install arm-linux-gnueabihf-binutils
# 设置环境变量
export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
export LDFLAGS="-L/opt/homebrew/opt/llvm/lib"
export CPPFLAGS="-I/opt/homebrew/opt/llvm/include"
export TARGET_CC=$(which clang)
# 编译并复制每个目标
for TARGET in "${TARGETS[@]}"
do
echo "正在为 $TARGET 编译..."
cargo build --release --target $TARGET
if [ $? -eq 0 ]; then
echo "编译成功,正在复制文件..."
TARGET_DIR="$OUTPUT_DIR/$TARGET"
mkdir -p $TARGET_DIR
cp target/$TARGET/release/项目名 $TARGET_DIR/
echo "已复制项目名到 $TARGET_DIR"
else
echo "编译 $TARGET 失败"
fi
done
echo "所有目标编译完成"
别忘了编辑脚本权限
chmod +x make_release.sh