M1 Pro MacBook Pro 上的奇遇:Rust 构建失败,SIGKILL 惊魂记

你是否也曾在 M1 Pro MacBook Pro 上遇到过离奇的编译问题?这次我遇到的奇葩问题绝对值得一聊------一个仅在苹果M1 Pro上的神秘构建失败。其他设备都安然无恙,唯独它!折腾了一番,终于让我揭开了这"阴谋"的真相。

问题描述

在运行 cargo build -r 时,构建卡住了,最终以一个简单又绝情的"SIGKILL"结束了这段编译之旅。错误日志一长串,然而所有提示只有一个:process didn't exit successfully。这明显意味着编译过程中某些依赖直接被干掉,根本没有任何机会完成。

示例错误:

bash 复制代码
error: failed to run custom build command for `proc-macro2 v1.0.86`
Caused by:
  process didn't exit successfully: `/Users/together/.../target/release/build/proc-macro2-44a92a22fd6e27cf/build-script-build` (signal: 9, SIGKILL: kill)

详细信息:

设备与环境

设备:M1 Pro MacBook Pro(macOS 14.4.1)

编译器:

bash 复制代码
rustc 1.81.0 (eeb90cda1 2024-09-04)
LLVM version: 18.1.7
Apple clang version 15.0.0
bash 复制代码
together@togetherdeMacBook-Pro: rustc -vV
rustc 1.81.0 (eeb90cda1 2024-09-04)
binary: rustc
commit-hash: eeb90cda1969383f56a2637cbd3037bdf598841c
commit-date: 2024-09-04
host: aarch64-apple-darwin
release: 1.81.0
LLVM version: 18.1.7
bash 复制代码
together@togetherdeMacBook-Pro: CC --version
Apple clang version 15.0.0 (clang-1500.3.9.4)
Target: arm64-apple-darwin23.4.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

显然,光看这设备配置,完全没理由在编译时倒下吧!其他系统都挺正常的,为何 M1 Pro 偏偏独特呢?带着这些疑问,我开始逐步探索问题的根源。

解决方案

为了找到背后的原因,我尝试了各种方法,最终终于找到问题的关键点和解决方案。如果你也有类似的经历,可以按以下步骤试试:

一、 检查 strip 命令路径

bash 复制代码
which strip

在大多数情况下,strip 应该位于 /usr/bin/strip。然而,如果它指向的是其他路径(比如 /usr/local/bin/strip,通常是通过 Homebrew 安装的 binutils),这可能会引起问题。将 strip 锁定到系统默认路径,便能解决编译时的一些不稳定性。

二、 调整 PATH 环境变量:

打开 ~/.zshrc 或 ~/.bash_profile,确保 /usr/bin 在 PATH 的最前面,或删除其他与 binutils 冲突的路径。这里我选择简单粗暴地注释掉与 binutils 相关的路径:

三、更新环境设置

运行以下命令,应用更新:

bash 复制代码
source ~/.zshrc  # 如果你使用 zsh
# 或者
source ~/.bash_profile  # 如果你使用 bash

四、 清除缓存 & 重新编译

重头再来一遍,清理缓存,然后重启构建过程。

bash 复制代码
cargo clean
cargo build --release

总结

折腾一番后,M1 Pro 终于乖乖配合工作了。这一折腾之旅提醒了我,开发环境总是暗藏玄机,尤其是在新硬件上。希望这篇经验对你有所帮助,如果遇到类似的情况,记得冷静排查,也许你所缺少的只是一个小小的 PATH 优化。

相关推荐
java干货14 分钟前
虚拟线程与消息队列:Spring Boot 3.5 中异步架构的演进与选择
spring boot·后端·架构
一只叫煤球的猫18 分钟前
MySQL 8.0 SQL优化黑科技,面试官都不一定知道!
后端·sql·mysql
写bug写bug1 小时前
如何正确地对接口进行防御式编程
java·后端·代码规范
不超限1 小时前
Asp.net core 使用EntityFrame Work
后端·asp.net
豌豆花下猫2 小时前
Python 潮流周刊#105:Dify突破10万星、2025全栈开发的最佳实践
后端·python·ai
忆雾屿3 小时前
云原生时代 Kafka 深度实践:06原理剖析与源码解读
java·后端·云原生·kafka
Undoom4 小时前
🔥支付宝百宝箱新体验!途韵归旅小帮手,让高铁归途变旅行
后端
不超限5 小时前
Asp.net Core 通过依赖注入的方式获取用户
后端·asp.net