当前位置: 首页 > article >正文

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

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

问题描述

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

示例错误:

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)
编译器:

rustc 1.81.0 (eeb90cda1 2024-09-04)
LLVM version: 18.1.7
Apple clang version 15.0.0

本机信息

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
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 命令路径

which strip

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

二、 调整 PATH 环境变量:
打开 ~/.zshrc 或 ~/.bash_profile,确保 /usr/bin 在 PATH 的最前面,或删除其他与 binutils 冲突的路径。这里我选择简单粗暴地注释掉与 binutils 相关的路径:
在这里插入图片描述
三、更新环境设置
运行以下命令,应用更新:

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

四、 清除缓存 & 重新编译
重头再来一遍,清理缓存,然后重启构建过程。

cargo clean
cargo build --release

总结

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


http://www.kler.cn/a/372094.html

相关文章:

  • 【论文精读】ID-like Prompt Learning for Few-Shot Out-of-Distribution Detection
  • 无人机协同控制技术详解!
  • 线性代数(1)——线性方程组的几何意义
  • 基于springboot的在线投票系统,比赛实时投票平台的实现
  • 嫉妒经济学:揭秘消费行为背后的情绪驱动力
  • 使用Python和OpenCV实现火焰检测
  • 「C/C++」C++17 之 std::variant 安全的联合体(变体)
  • 【FinalShell问题】FinalShell连接虚拟机超时问题
  • Javaweb项目发布到阿里云服务器
  • MongoDB 部署指南:从 Linux 到 Docker 的全面讲解
  • AUTOSAT-PDUR模块
  • 【Linux】 su 和 sudo 的区别剖析
  • B计划在哪里?下一个10年我在哪里?
  • 基于uniapp微信小程序的餐厅预约点餐系统
  • NORDIC NPM1300是一款高度集成的电源管理集成电路
  • 封闭空间防碰撞无人机技术详解
  • ROC 曲线:医学研究中的得力助手
  • 操作系统学习笔记-2.3哲学家和管程问题
  • MaxKB: 一款基于大语言模型的知识库问答系统
  • WPF拖拽交互全攻略及实现自定义拖拽控件及数据交换技巧解析
  • 【SSM详细教程】-15-Spring Restful风格【无敌详细】
  • OpenCV基本操作(python开发)——(7)实现图像校正
  • ios 快捷指令扩展(Intents Extension)简单使用 swift语言
  • 北航软件工程考研难度分析!
  • 依托微信小程序,畅享校园二手交易
  • 面试宝典(五):用三个线程按顺序循环打印123三个数字,比如123123123