Ubuntu マシンで動作する Raspberry Pi のクロスコンパイルを試みています。
最初の試みでは、Ubuntu リポジトリで入手できる arm-linux-gnueabi コンパイラを使用していました。私はこれを機能させました。すべての依存関係を構築し、cmake プロジェクトでクロスコンパイラを使用することができました。
ただし、hf バージョンを使用する必要があると思われるため、arm-linux-gnueabihf に切り替えました。それから、これはarmv6であるため、Raspberry Piでは機能しないことに気付きました。
グーグルで調べた後、GitHub からビルド済みのツールチェーンを見つけました。
ツールチェーンをダウンロードしましたが、「インストール」する方法がよくわかりません。ファイルをホームディレクトリに抽出しました。ディレクトリ構造は次のようになります。
/gcc-linearo-arm-linux-gnueabihf-raspbian
/arm-linux-gnueabihf
/bin
(contains g++, gcc, etc)
/lib
(contains libstdc++ library)
/bin
(contains arm-linux-gnueabihf-g++, arm-linux-gnueabihf-...)
/lib
(gcc lib stuff)
ディレクトリを INNER bin フォルダーに変更すると、端末から問題なくテスト プログラムをコンパイルできます。
~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/
arm-linux-gnueabihf/bin$ g++ test.cpp -o test
次に、ツールのプレフィックス付きのバージョンを含む OUTER bin フォルダーでテスト プログラムをコンパイルしようとしました。
~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin$
arm-linux-gnueabihf-g++ test.cpp -o test
ただし、(内部の bin ディレクトリの外部から) コンパイラを使用しようとすると、ツールチェーンに付属する libstdc++ 共有ライブラリが見つかりません。
arm-linux-gnueabihf-gcc: error while loading shared libraries:
libstdc++.so.6: cannot open shared object file: No such file or directory.
さらに、bin ディレクトリに移動しなくてもコンパイラを使用できるようにしたいと考えています。そこで、OUTER bin ディレクトリ (接頭辞付きのバージョンが必要なため) と両方の lib ディレクトリを PATH に追加してみました。
export PATH=$PATH:~/tools/.../bin
export PATH=$PATH:~/tools/.../lib
export PATH=$PATH:~/tools/.../.../lib
ただし、これにより同じエラーが発生します。Ubuntu リポジトリのクロスコンパイラを使用する場合と同じように、ツールチェーンをどこからでも使用できるようにするには、どのようにツールチェーンを「インストール」する必要がありますか?