M1芯片(Arm64)环境下Rust项目依赖ZeroMQ编译失败问题
解决Rust与ZeroMQ架构不匹配的链接问题
方案1:切换Rust编译目标为Arm64(推荐)
既然你已经安装了Arm64版本的ZeroMQ,让Rust编译Arm64程序即可匹配架构:
- 添加Arm64编译目标:
rustup target add aarch64-apple-darwin - 编译时指定目标架构:
cargo build --target aarch64-apple-darwin
方案2:安装x86_64版本的ZeroMQ并在x86环境编译
若需要保持Rust以x86_64编译,可通过Rosetta终端安装对应版本的ZeroMQ:
- 右键终端图标,选择使用Rosetta打开,进入x86_64运行环境
- 安装x86版本的Homebrew(未安装时执行):
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - 在该终端下安装x86版本的ZeroMQ:
brew install zeromq - 直接在这个x86终端中运行
cargo build,编译出的x86_64程序会自动链接对应架构的ZeroMQ库
方案3:临时指定x86库路径编译
若已安装x86版本的ZeroMQ(默认路径为/usr/local/lib),可在编译时手动指定库路径:
LIBRARY_PATH=/usr/local/lib cargo build
问题说明
当前Rust通过Rosetta以x86_64架构运行,但ZeroMQ为Arm64版本,导致链接阶段因架构不匹配报错。直接用arch -x86_64 brew install zeromq失败,是因为brew会强制匹配终端运行的架构,需通过Rosetta启动的终端才能安装x86版本的依赖。
内容的提问来源于stack exchange,提问作者joethemow
相关产品推荐
相关产品推荐

