とある技術者の覚え書き

技術者なんて日々是勉強ですね・・

Ubuntu上にRaspberry Piのクロスコンパイル環境を構築

奥深くに仕舞っていたRaspberry Piを久々に引っ張り出してきました。 Raspberry Piのモデルは初代モデル。かなり古い奴ですね。

とりあえず、Raspberry PiのOSは最新に入れ替え。

インストールはこちらを見れば比較的すんなり完了します。

raspida.com

後は、Raspberry PiSSHで接続できるように以下を見て設定を実施しました。

kimamani89.com

ロスコンパイル環境の構築

ロスコンパイル環境はWindows10のWSL上に構築したUtunu 20.04 に構築します。

手順についは、概ねこちらを見て頂きますが、それだけではサンプルのビルド時にリンクエラーが出ましたので、その分について対応を記述します。

www.radical-dreamer.com

ロスコンパイル環境の構築の問題と追加手順

上記に従いクロスコンパイル環境でサンプルソースをビルドすると以下の通りリンク時にライブラリが見つからなとエラーで怒られました。

$ arm-linux-gnueabihf-clang hello.c 
/usr/bin/arm-linux-gnueabihf-ld: cannot find /lib/ld-linux-armhf.so.3 inside /home/xxxxx/raspberry_pi/prebuilt/bin/../../sysroot
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Raspberry Piにて確認したところ、

pi@raspberrypi:~ $ ls -al /lib/ld-linux-armhf.so.3
lrwxrwxrwx 1 root root 30 12月  1 19:52 /lib/ld-linux-armhf.so.3 -> arm-linux-gnueabihf/ld-2.31.so

のように、シンボリックリンクのファイルが存在しますが、これがUbuntu上の環境にはない。

なので、以下のようにシンボリックリンクを作成すると解決。

$ cd ~/raspbian/sysroot/lib
$ sudo ln -s arm-linux-gnueabihf/ld-linux-armhf.so.3 ld-linux-armhf.so.3

これでサンプルは問題なくビルドできるようになりました。