123

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 リポジトリのクロスコンパイラを使用する場合と同じように、ツールチェーンをどこからでも使用できるようにするには、どのようにツールチェーンを「インストール」する必要がありますか?

4

9 に答える 9

5

に追加するまで、コンパイラ (x64バージョン) を使用することができませんでした。sysrootSET(CMAKE_SYSROOT $ENV{HOME}/raspberrypi/rootfs)pi.cmake

于 2016-02-04T12:07:40.610 に答える
1

Windows と Linux の両方からのクロス コンパイルとデプロイを非常に簡単にする CDP Studio IDE が利用可能で、インストール中にラズベリー ツールチェーンのチェックボックスをオンにするだけです。(追伸。GPIO と I2C をサポートしているため、それらにアクセスするためのコードは必要ありません)

ラズベリー使用の IDE デモはこちら: https://youtu.be/4SVZ68sQz5U

IDE はhttps://cdpstudio.com/home-editionからダウンロードできます。

于 2017-11-27T12:33:09.570 に答える
1

CMake を使用して Raspberry Pi 4 用にクロスコンパイルする方法を示すサンプル リポジトリを作成しました。また、ツールチェーンのインストールと、ルート ファイルシステムのクローンを作成するときに必要ないくつかの特別な手順も含まれます。原則として、古いPiでも使用できるはずですが、ツールチェーンは別のものになる可能性があります: https://github.com/spacefisch/raspberrypi-crosscompiling

于 2021-05-27T19:01:03.183 に答える