怎么編網站中央廣播電視總臺
你是否也曾在 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)
詳細信息:
設備與環(huán)境
設備: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
顯然,光看這設備配置,完全沒理由在編譯時倒下吧!其他系統(tǒng)都挺正常的,為何 M1 Pro 偏偏獨特呢?帶著這些疑問,我開始逐步探索問題的根源。
解決方案
為了找到背后的原因,我嘗試了各種方法,最終終于找到問題的關鍵點和解決方案。如果你也有類似的經歷,可以按以下步驟試試:
一、 檢查 strip 命令路徑
which strip
在大多數情況下,strip 應該位于 /usr/bin/strip。然而,如果它指向的是其他路徑(比如 /usr/local/bin/strip,通常是通過 Homebrew 安裝的 binutils),這可能會引起問題。將 strip 鎖定到系統(tǒng)默認路徑,便能解決編譯時的一些不穩(wěn)定性。
二、 調整 PATH 環(huán)境變量:
打開 ~/.zshrc 或 ~/.bash_profile,確保 /usr/bin 在 PATH 的最前面,或刪除其他與 binutils 沖突的路徑。這里我選擇簡單粗暴地注釋掉與 binutils 相關的路徑:
三、更新環(huán)境設置
運行以下命令,應用更新:
source ~/.zshrc # 如果你使用 zsh
# 或者
source ~/.bash_profile # 如果你使用 bash
四、 清除緩存 & 重新編譯
重頭再來一遍,清理緩存,然后重啟構建過程。
cargo clean
cargo build --release
總結
折騰一番后,M1 Pro 終于乖乖配合工作了。這一折騰之旅提醒了我,開發(fā)環(huán)境總是暗藏玄機,尤其是在新硬件上。希望這篇經驗對你有所幫助,如果遇到類似的情況,記得冷靜排查,也許你所缺少的只是一個小小的 PATH 優(yōu)化。