実行ファイルの作成(ビルド)

プログラムのソースコード(main.cpp)から実際にマイコンに書き込むプログラムを作成するには、以下のような作業が必要になります。

  • ソースコード(main.cpp、およびその他フレームワークで提供されているコード類)をバイナリのプログラムファイルにする「コンパイル」。
  • コンパイルしたファイル群やライブラリをひとつの実行可能ファイルにつなげる「リンク」。
  • 「リンク」で生成されたプログラムファイルから最終的にマイコンに送信するファイルを生成する「コンバート」。

これら一連の作業をまとめて「ビルド」と言います。PlatformIOには、ビルドに必要な一連の作業を行うツールチェーンが含まれており、ビルドボタンをクリックするだけで最終的にマイコンに送信するファイルを生成してくれます。

それでは、プロジェクトをビルドしてみましょう。ビルドを実行するには、VSCodeの画面右上の「Build」をクリックします。

画面下の「ターミナル」に下図のように表示されれば、ビルドが成功したことになります。

エラーが出たら、ソースファイルの記述ミスがあると考えられます。エラーメッセージをよく見て原因を突き止めましょう。

エラーへの対処

例えば、STEP02のプログラム例の14行目を以下のように変更(「pinMode」を「pinMod」に)した上でビルドを行ってみましょう。

  // 入出力設定(アノード)
  pinMod(0, OUTPUT);
  pinMode(2, OUTPUT);
Code language: Arduino (arduino)

このビルドはエラーが出て失敗します。以下はエラーの例です。

上記エラーメッセージ中の最初の赤色の行にある「src/main.cpp:14:3:」は、「src」ディレクトリの「main.cpp」ファイルの14行目の3文字目から始まる構文にエラーがある、ということを示しています。

errorの右側に示された内容を見ると、「pinMod」がヘッダファイルにもソースプログラムにも定義されていない文字列なのでエラーになったようです。このエラーの場合、エラーメッセージの下で提案されているようにエラーとなっている「pinMod」を「pinMode」と修正すれば解決します。

上記の例では、VSCode上でも問題のある部分が赤の下波線で示されています。

実行ファイル

ビルドに成功すると、

(プロジェクトのルートディレクトリ) > 「.pio」 > 「build」 > 「esp32dev」

の中に複数のファイルが生成されます。主なファイルは以下のとおりです。

ファイル名解説
firmware.binマイコンへの書き込み用ファイルです。
firmware.elfコンパイラの生成した実行可能ファイルで、デバッグの時に参照されます。
firmware.mapマイコンのメモリがどのように使われているかの情報が出力されています。

クリーン

ビルドで一度コンパイルが行われると、次回のビルド時には、ソースコードに変更の無いものについては前回のビルド時に生成されたバイナリファイルが使われます。何らかの事情で全てのソースコードのコンパイルをし直したい場合は、プロジェクトを「クリーン(Clean)」します。

クリーンを実行するには、VSCodeの画面右上の「Clean」をクリックします。

クリーンを実行することで、コンパイルで生成されたバイナリファイル等は削除され、次回ビルド時には全てのソースコードが再度コンパイルされます。

前の記事

プログラム実行の流れ

次の記事

データ転送