怎么編網(wǎng)站中央廣播電視總臺(tái)
你是否也曾在 M1 Pro MacBook Pro 上遇到過(guò)離奇的編譯問(wèn)題?這次我遇到的奇葩問(wèn)題絕對(duì)值得一聊——一個(gè)僅在蘋(píng)果M1 Pro上的神秘構(gòu)建失敗。其他設(shè)備都安然無(wú)恙,唯獨(dú)它!折騰了一番,終于讓我揭開(kāi)了這“陰謀”的真相。
問(wèn)題描述
在運(yùn)行 cargo build -r 時(shí),構(gòu)建卡住了,最終以一個(gè)簡(jiǎn)單又絕情的“SIGKILL”結(jié)束了這段編譯之旅。錯(cuò)誤日志一長(zhǎng)串,然而所有提示只有一個(gè):process didn’t exit successfully。這明顯意味著編譯過(guò)程中某些依賴直接被干掉,根本沒(méi)有任何機(jī)會(huì)完成。
示例錯(cuò)誤:
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)
詳細(xì)信息:
設(shè)備與環(huán)境
設(shè)備: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
顯然,光看這設(shè)備配置,完全沒(méi)理由在編譯時(shí)倒下吧!其他系統(tǒng)都挺正常的,為何 M1 Pro 偏偏獨(dú)特呢?帶著這些疑問(wèn),我開(kāi)始逐步探索問(wèn)題的根源。
解決方案
為了找到背后的原因,我嘗試了各種方法,最終終于找到問(wèn)題的關(guān)鍵點(diǎn)和解決方案。如果你也有類(lèi)似的經(jīng)歷,可以按以下步驟試試:
一、 檢查 strip 命令路徑
which strip
在大多數(shù)情況下,strip 應(yīng)該位于 /usr/bin/strip。然而,如果它指向的是其他路徑(比如 /usr/local/bin/strip,通常是通過(guò) Homebrew 安裝的 binutils),這可能會(huì)引起問(wèn)題。將 strip 鎖定到系統(tǒng)默認(rèn)路徑,便能解決編譯時(shí)的一些不穩(wěn)定性。
二、 調(diào)整 PATH 環(huán)境變量:
打開(kāi) ~/.zshrc 或 ~/.bash_profile,確保 /usr/bin 在 PATH 的最前面,或刪除其他與 binutils 沖突的路徑。這里我選擇簡(jiǎn)單粗暴地注釋掉與 binutils 相關(guān)的路徑:
三、更新環(huán)境設(shè)置
運(yùn)行以下命令,應(yīng)用更新:
source ~/.zshrc # 如果你使用 zsh
# 或者
source ~/.bash_profile # 如果你使用 bash
四、 清除緩存 & 重新編譯
重頭再來(lái)一遍,清理緩存,然后重啟構(gòu)建過(guò)程。
cargo clean
cargo build --release
總結(jié)
折騰一番后,M1 Pro 終于乖乖配合工作了。這一折騰之旅提醒了我,開(kāi)發(fā)環(huán)境總是暗藏玄機(jī),尤其是在新硬件上。希望這篇經(jīng)驗(yàn)對(duì)你有所幫助,如果遇到類(lèi)似的情況,記得冷靜排查,也許你所缺少的只是一個(gè)小小的 PATH 優(yōu)化。