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 优化。

相关推荐
喵了几个咪5 分钟前
GoWind CMS 拆解:在 Go 里给 TipTap 搭一套 Yjs 协同后端
开发语言·后端·golang
Flynt12 分钟前
我把微信运动的排行榜和定点推送复刻了一遍:100万次步数更新只要4秒,坑在别处
redis·后端·性能优化
_孤傲_2 小时前
快速掌握 MySQL 语法
数据库·后端·mysql
IT_陈寒4 小时前
Java静态变量初始化坑得我头皮发麻
前端·人工智能·后端
步行cgn4 小时前
Thymeleaf 编辑表单详解:从字段回填到模拟 PUT 请求
后端
Song_RsHt5 小时前
Redis 与微服务,什么场景下无可替代
java·redis·后端·学习·微服务
学长毕设6 小时前
基于SpringBoot的建筑材料管理系统-附源码
java·spring boot·后端
程序员cxuan6 小时前
掀桌子了!Kimi K3.1 Pro 这效果也太离谱了。
人工智能·后端·程序员
摸爬滚打的小李6 小时前
关于 Arthas
java·后端
武子康6 小时前
黑图、彩色噪声、NaN、偏色怎么排查
人工智能·后端·agent