概要
UbuntuでコンパイルしたC言語のプログラムをRaspberry Pi Zeroで動かす。
それだけです。
環境
ホスト: Ubuntu 20.04.1 < Virtual Box 6.1 < WIndows10
ターゲット: Raspberry Pi Zero WH
手順
ARM向けコンパイラのインストール
$ sudo apt install g++-arm-linux-gnueabi
今回必要なのは gcc なんですけど、今後使うかもしれないので g++ をインストール。gcc とか必要なものも一緒にインストールしてくれます。
Raspberry Pi 向けのクロスコンパイラとして g++-arm-linux-gnueabihf
をインストールする記事もありますが、こちらでは Zero の CPU(ARMv6系)には対応していません。
ビルド
の前に今回ビルドするプログラムを、、
#include <stdio.h>
int main()
{
printf("Hogehoge Cross!!\n");
return 0;
}
最初なのでこんなもんで。
こちらをこのようにビルド。
$ arm-linux-gnueabi-gcc -march=armv6 hogehoge.c -o hogehoge_armv6
-march=
で ARMアーキテクチャを指定。
Raspberry Pi Zero が ARMv6系なので、そのように指定しましたが、今回のプログラムでは
armv4
, armv5t
, armv5te
, armv5tej
, armv6
の指定でどれも動きました。
armv7
を指定したものは "Segmentation fault" って出て動きませんでしたね。
動かします
上で「動きました」とか書いちゃいましたが、ビルドしてできた hogehoge_armv6 ファイルを Raspberry Pi Zero の適当なディレクトリにコピーして、、
$ ./hogehoge_armv6
Hogehoge Cross!!
こんな感じで動きました。
まとめ
簡単なプログラムなのもありますが意外と簡単に動きました。
追記
続きの記事を書きました