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 の書き込みガイドを参照してください。物理ボードとシリアルポートなしでは、コンパイル用のスケッチで書き込みはテストできません。