カスタム カーネル モジュール (この git から)をクロスコンパイルしようとしています。これは、もともと git 内でコンパイルされたプラグインに依存しています ($git/buildtools/gcc-nexmon-plugin/nexmon.c にあります)。
もともと、このツリーはラズベリー pi で直接ビルドすることを目的としていますが、この機能を buildroot システムに移植したいと考えています。つまり、ラズベリー pi に gcc/g++ がなく、私のノートパソコン。
私の問題は、nexmon.so(プラグインファイル)を適切に作成して、後でクロスコンパイル中に使用できるようにする方法です
nexmon.so を生成する元のコマンド ラインは次のとおりです。
g++ -std=c++11 -Wall -fno-rtti -fPIC -I../gcc-arm-noneabi[...]/plugin/include \
-c -o nexmon.o nexmon.c
g++ -shared -o nexmon.so nexmon.o
ご覧のとおり、ツリー ("../gcc-arm..") 内にいくつかのクロスコンパイラが含まれています。
これで、プラグインをクロスコンパイルしてはならないことがわかりました。彼らはこれをラズベリーパイで実行することを望んでいるので、「g++」は埋め込まれた「g++」です。私の側では、ラップトップの「g ++」を実行する必要があります。
残念ながら、私のラップトップでは動作しないようです。これが私が最近試していることです:
g++ -std=c++11 -Wall -fno-rtti -fPIC -I/usr/include \
-I/usr/lib/gcc/x86_64-linux-gnu/8/plugin/include -o nexmon.o -c nexmon.c
現在 g++ 8.3.0-6 を使用しているため、プラグイン開発用の対応するヘッダーを見つけました。これを実行すると、大量の問題が発生します。
- 「含まれている plugin/include/tree.h ファイル: #error Unknown BITS_PER_UNIT」
- 「インクルードされた plugin/include/cpplib.h ファイル: #error 少なくとも 32 ビットの符号付き整数型が見つかりません」
これにより、ラップトップのアーキテクチャを適切に定義するためのフラグがいくつか不足していると思いますが、間違っている可能性があります。
ここに私のエラーの完全な PasteBin があります:出力ログ
gcc8/plugin/include が存在するので、プラグインを構築するためのものがあると思います。「gcc-multilib、gcc-8-plugin-dev-i686-linux-gnu、gcc-8-plugin-dev-x86-64-linux-gnux32、gcc-8-plugin-dev」をインストールしようとしました。以前の gcc (4.8、5、6、7 など) に戻ることができません。これは、すべての debian アップグレードでそれらが削除され、使用されなくなったためです。
これまで誰も私を助けることができず、アイデアが尽きてしまいました。この点は、私のプロジェクトを完全に妨げています。