LoginSignup
2

More than 3 years have passed since last update.

Ubuntu上でRaspberry Pi Zero向けクロスコンパイル事始め

Last updated at Posted at 2020-11-06

概要

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系)には対応していません。

ビルド

の前に今回ビルドするプログラムを、、

hogehoge.c
#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!!

こんな感じで動きました。

まとめ

簡単なプログラムなのもありますが意外と簡単に動きました。

追記

続きの記事を書きました

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2