目的
M5UnitV2のクロスコンパイル環境でプログラムを作成し、
Hello Worldを実行します。
事前準備
M5Stack UnitV2のクロスコンパイル環境を構築する手順
プログラムの作成
以下のように、C++言語で、Hello Worldのプログラムを作成します。
test.cpp
#include <iostream>
using namespace std;
int main() {
cout<<"Hello UnitV2 World"<<endl;
return 0;
}
プログラムのコンパイル
まずは、通常環境のコンパイラ g++でプログラムをコンパイルしてみましょう。
g++ test.cpp -o test
ubuntu-PCの中でバイナリを実行すると、Hello Worldが出てきました。
$ ./test
hello world
次に、arm用のクロスコンパイラarm-none-linux-gnueabihf-g++
を使ってプログラムをビルドします。
$ arm-none-linux-gnueabihf-g++ test.cpp -o test
arm環境のバイナリなので、ubuntu-PCの中で実行しても
Hello Worldは出ません。
$ ./test
bash: ./test: バイナリファイルを実行できません: 実行形式エラー
ファイル形式を調べるためのコマンド「file」でファイルを見てみましょう。
arm環境のバイナリであることが確認できました。
$ file ./test
./test: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, with debug_info, not stripped
このバイナリをUnitV2環境にコピーします。
PCとUnitV2とをUSBで接続し、SCPコマンドでバイナリをコピーします。
$ scp ./test m5stack@unitv2.local:/media/sdcard/
SSHでUnitV2にログインして、バイナリを実行します。
$ ssh m5stack@unitv2.local
unitv2% cd /media/sdcard/
unitv2% ./test
Hello UnitV2 World
Hello UnitV2 Worldが表示できることが確認できました。
参考資料
この記事を作成するにあたり、以下のウェブサイトを参考にしました。