こんにちは。ピャペロンです。
今回は簡単なプログラムをクロスコンパイルしてパペロで実行してみました。
パペロでライブラリやパッケージを利用したい場合、基本的にパペロ向けにソースコードからコンパイルしないと動かないのでクロスコンパイルできるようになると開発の幅が広がります。
目的
WindowsPCでクロスコンパイルしたプログラムをパペロで実行して「Hello World」を出力する。
今回使用する主なハード
- WindowsPC
- PaPeRo i 本体
今回使用する主なソフト
- Windows 10
- Tera Term
- PaPeRo i SDK
- VirtualBox
- debian-10.1.0
Debianの仮想環境構築
VirtualBoxでDebianの仮想環境を作成します。
sudoコマンドがインストールされてなかったのでrootユーザーに切り替えてaptコマンドでインストールしたら
gpasswd -a USER名 sudo
を実行してsudoを使えるようにします。
一般ユーザーに切り替えて必要なパッケージをaptでインストール
sudo apt install build-essential libncurses5-dev gawk git libssl-dev gettext zlib1g-dev swig unzip time
PaPeRo i SDKをDebianに転送します。
Hello Worldのクロスコンパイル
簡単なソースコード作成
hello.c
#include <stdio.h>
int main(void)
{
printf("Hello World\n");
return 0;
}
PaPeRo i SDKの中にあるクロスコンパイラでhello.cをクロスコンパイルします。
./paperoSDK/toolchain/bin/arm-openwrt-linux-gcc hello.c -o hello
helloファイルをパペロに転送して実行してみよう。
./hello
Hello World
まとめ
とりあえず簡単なソースコードのコンパイルには成功したけどGCCも古いので複雑なソースコードのビルドは一気に難しくなりそうです。
OpenWrt公式でSDKを提供しているので次回は公式SDKでクロスコンパイルして実行できるのか確認してみようと思います。