一部のRasperry Pi C / C ++カーネルモジュールの開発にBuildRoot 2015.08.1を使用する予定です。
働くもの:
- カーネルとrootfsをビルドし、Raspberry Piを起動できます。
- BuildRootツールチェーンをユニバーサルパッケージまたは自動化ツールキットとして使用して、「hello world」を構築/再構築できます。
間違った方法:
- linux/module.hなどの特定のカーネルヘッダファイルを含めることはできません。ツールチェーンでこのヘッダーファイルが見つかりません。
出力/ステージング/usr/includeを見てみました。 linux/net.h などの一部の Linux ヘッダーファイルを見つけることができます。しかし、linux/module.hのような他のものは存在しません。
私が探しているヘッダーはカーネルソースツリーにあります。しかし、ステージスペースにはインストールされていないようです。 BuildRootが "make headers_install"を呼び出すかどうかを100%確信することはできませんが、合理的な仮定のようです。 "make headers_install"がインストールするヘッダーを選択する方法を知っている人はいますか?それとも別のものを見逃していますか?
答え1
linux/module.hなどの特定のカーネルヘッダファイルを含めることはできません。ツールチェーンでこのヘッダーファイルが見つかりません。
カーネルモジュール:「make」コマンドには、これを実行する「内部」があります。 (のみ)特殊»を使用する場合カーネルモジュール Makefile«→→
→https://stackoverflow.com/questions/33589276/linux-kernel-module-compilation/33589361#33589361
答え2
以下は、カーネルモジュールの完全に自動化されたツリーの外部設定です。https://github.com/cirosantilli/linux-kernel-module-cheat/blob/b89ba9b799480e4eb1975f0a704409efb7d667d1/kernel_module/external.mk
ここでは最小限のバージョンについて説明しました。https://stackoverflow.com/questions/40307328/how-to-add-a-linux-kernel-driver-module-as-a-buildroot-package/43874273#43874273
パッケージタイプは$(eval $(kernel-module))
デフォルトですべてを設定します。