LoginSignup
1
1

More than 3 years have passed since last update.

Debian上でRaspberry Pi Zero向けクロスコンパイル ~共有ライブラリを使ってみる

Last updated at Posted at 2020-11-09

概要

Debain上でコンパイルしたC言語のプログラムをRaspberry Pi Zeroで動かします。
共有ライブラリとか使える環境にしたいです。
とりあえず、libusbとかlibjpegとか使えるようにします。

Ubuntu上でRaspberry Pi Zero向けクロスコンパイル事始め の続きですが、ホストマシンをDebianにして再挑戦しています(理由は後ほど)。

環境

ホスト: Debian 10.6.0 < Virtual Box 6.1 < WIndows10
ターゲット: Raspberry Pi Zero WH

手順

ARM向けコンパイラのインストール

$ sudo apt install crossbuild-essential-armel

前回g++-arm-linux-gnueabiをインストールしてみましたが、crossbuild-essential-armelに含まれているようなのでこちらをインストールしてみます。結局使うのはgccなんであんまり大差ないですけど。

共有ライブラリのインストール

アーキテクチャを追加して、、

$ sudo dpkg --add-architecture armel

sources.listの編集。aptが参照するリポジトリを追加してやります。

$ sudo nano /etc/apt/sources.list

sources.listの一番下に以下を追加。
armelの場合はftp.jp.debian.orgも参照するようにします。

/etc/apt/sources.list
deb [arch=armel] http://ftp.jp.debian.org/debian buster main

アップデートして、ライブラリをインストール。
:armelを付与することでarmel向けのライブラリを取得することができます。

$ sudo apt update
$ sudo apt install libusb-dev:armel
$ sudo apt install libjpeg-dev:armel

多分、Ubuntuのarmel向けにパッケージが公開されていればそれをsources.listに追加して、Ubuntuでも同じことができると思うのですが、Ubuntu向けのarmelパッケージを公開しているところが見つかりません。

試しにUbuntuでftp.jp.debian.org/debianを追加してみましたが、「署名されてません」みたいなエラーが出てインストールできませんでした。そりゃそうか。

強引にインストールする方法はあるのかな?(.debを持ってきてのインストールはできたけど依存関係が大変なことになったので諦めました)

ビルド

今回ビルドしてみるプログラムはこちら。

testUsbLib.c
#include <stdio.h>
#include <usb.h>

int main()
{
    printf("call usb_init()\n");
    usb_init();
    printf("OK\n");

    return 0;
}

usb_init()を呼ぶだけという何の役にも立たないプログラム。
usb_init()の後片付けもしません(何かする必要あったっけ、、?)。

こちらをビルド。

$ arm-linux-gnueabi-gcc -march=armv6 testUsbLib.c -o testUsbLib_armv6 -lusb

動作させてみる

上でうまくビルドができれば生成されたtestUsbLib_armv6をRaspberry Pi Zeroの適当なフォルダにコピーして、、

$ testUsbLib_armv6
call usb_init()
OK

と、こんな感じで動きます。
何も起こりませんが、、

まとめ

libusbは依存関係が少ないので.debファイルを取得してきての手動インストールでもどうにかなりますが、libjpegなどは依存関係が多く、手動では手順が多すぎてあきらめました。今回の方法では依存関係含めてインストールしてくれたのでなんとか動いたようです。

ちなみに今回の方法でlibusblibjpegの他にlibtiffの動作も確認しています。

あとはUbuntuで同様の方法が使えるのか(armel向けパッケージを公開しているところがあるのか等)についてご存じの方がいらっしゃいましたら教えてください。

追記

続きの記事を書きました。

1
1
0

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
1
1