Ubuntu上にRaspberry Piのクロスコンパイル環境を構築
奥深くに仕舞っていたRaspberry Piを久々に引っ張り出してきました。 Raspberry Piのモデルは初代モデル。かなり古い奴ですね。
とりあえず、Raspberry PiのOSは最新に入れ替え。
インストールはこちらを見れば比較的すんなり完了します。
後は、Raspberry PiにSSHで接続できるように以下を見て設定を実施しました。
クロスコンパイル環境の構築
クロスコンパイル環境はWindows10のWSL上に構築したUtunu 20.04 に構築します。
手順についは、概ねこちらを見て頂きますが、それだけではサンプルのビルド時にリンクエラーが出ましたので、その分について対応を記述します。
クロスコンパイル環境の構築の問題と追加手順
上記に従いクロスコンパイル環境でサンプルソースをビルドすると以下の通りリンク時にライブラリが見つからなとエラーで怒られました。
$ 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
これでサンプルは問題なくビルドできるようになりました。