M1 Mac用Cross交叉编译报错:docker无匹配linux/arm64/v8镜像清单
解决M1 Mac上Cross拉取x86_64-unknown-linux-musl镜像失败的问题
问题核心是你使用的Cross 0.2.5版本对应的镜像未适配Apple Silicon的arm64架构,Docker找不到对应manifest导致拉取失败。以下是几种可行的解决办法:
升级Cross到最新版本
新版本Cross已适配arm64架构,直接升级即可:cargo install -f cross若crates.io上的版本未及时更新,也可直接从GitHub安装最新开发版:
cargo install -f cross --git https://github.com/cross-rs/cross开启Docker的Rosetta模拟
打开Docker Desktop,进入Settings->Features in development,勾选Use Rosetta for x86/amd64 emulation on Apple Silicon,重启Docker后再尝试拉取镜像。Docker会通过Rosetta模拟x86_64环境,正常拉取对应架构的镜像。手动指定架构拉取镜像
若升级后仍有问题,可手动拉取x86_64架构的镜像:docker pull --platform linux/amd64 ghcr.io/cross-rs/x86_64-unknown-linux-musl:latest拉取完成后执行
cross build --target x86_64-unknown-linux-musl即可。配置Cross指定平台
在项目根目录创建Cross.toml文件,手动指定目标平台的镜像和架构:[target.x86_64-unknown-linux-musl] image = "ghcr.io/cross-rs/x86_64-unknown-linux-musl:latest" platform = "linux/amd64"这样Cross会按照指定架构拉取和使用镜像。
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

