HOWTO · Arduino

透過閱讀實際錯誤修正 Arduino 退出狀態 1

退出狀態 1 是通用的失敗結果。請閱讀前面的診斷訊息,並區分編譯錯誤和上傳問題。

本頁內容

exit status 1 是通用的失敗結束提示,不是具體原因。請閱讀它上方包含檔名和行號的第一條錯誤。如果編譯成功而上傳失敗,應檢查開發板、連接埠和開機載入程式,而不是修改已能編譯的程式碼。

找出真正的診斷訊息

Compilation error: exit status 1 和 ld returned 1 exit status 是報告末尾的摘要。真正有用的原因在前面,例如 expected ';'、was not declared in this scope 或 No such file or directory。求助時請提供完整輸出,而不是只貼最後兩行。Arduino 編譯指南說明了如何閱讀這些訊息。

用最小草圖驗證

以下精確草圖已使用 Arduino CLI 1.5.1、Arduino AVR Boards 1.8.8 與 arduino:avr:uno 編譯:

void setup() {}

void loop() {}

對 Uno 執行 arduino-cli compile --fqbn arduino:avr:uno <草圖資料夾>;其他開發板請替換 FQBN。若它也失敗,請先選擇正確的開發板,並在開發板管理員安裝其平台,再檢查專案語法。

修正顯示的錯誤

以下測試過的草圖會失敗,因為 Serial.begin(9600) 後面少了分號:

void setup() {
  Serial.begin(9600)
}

void loop() {}

觀察到的結果為 error: expected ';' before '}' token,接著是 Error during build: exit status 1。加入分號後重新編譯。也請檢查大括號、識別字拼寫與變數範圍;報告的行可能在真正錯誤的下一行。

若出現 fatal error: SomeLibrary.h: No such file or directory,請確認標頭名稱與程式庫文件,然後在 Sketch > Include Library > Manage Libraries 安裝正確且相容的程式庫。只將單一 .h 檔放到草圖旁,不會安裝相依性,也不保證開發板相容性。

將上傳問題分開處理

如果「驗證」成功但上傳以 status 1 結束,這不是語法錯誤。確認開發板和連接埠,關閉使用該連接埠的序列監控器,重新連接開發板,並在適用時檢查處理器或開機載入程式選項。請參閱 Arduino 上傳指南。沒有實體開發板與序列連接埠時,編譯草圖無法驗證上傳行為。