web-dev-qa-db-ja.com

カーネルモジュール開発のためにBuildrootを使用してステージングにカーネル開発ヘッダーをインストールする方法は?

BuildRoot2015.08.1を使用してRasperryPi C/C++カーネルモジュールの開発を行う予定です。

何が機能するか:

  • カーネルとrootfsを構築し、RaspberryPiを起動できます。
  • BuildRootツールチェーンをgeneric-packageまたはautotools-packageとして使用して、「helloworld」をビルド/再構築できます。

動作しないもの:

  • Linux/module.hなど、一部のカーネルヘッダーを含めることはできません。ツールチェーンはこのヘッダーファイルを見つけられません。

Output/staging/usr/includeを確認しました。 linux /net.hなどのLinuxヘッダーを見つけることができます。ただし、linux/module.hなど、他のものはありません。

私が探しているヘッダーは、カーネルソースツリーにあります。ただし、ステージングにはインストールされていないようです。 BuildRootが「makeheaders_install」と呼んでいることを100%確信しているわけではありませんが、それは合理的な仮定のようです。 「makeheaders_install」がインストールするヘッダーを選択する方法へのポインタはありますか?それとも私は何か他のものが欠けていますか?

2
marcv81

Linux/module.hなど、一部のカーネルヘッダーを含めることはできません。ツールチェーンはこのヘッダーファイルを見つけられません。

カーネルモジュール:「make」コマンドには、それを行うための「内部」があります。特別な"カーネルモジュールMakefile"→→を使用している場合にのみ機能します

https://stackoverflow.com/questions/33589276/linux-kernel-module-compilation/33589361#33589361


1
Knud Larsen

カーネルモジュールの完全に自動化されたツリー外セットアップは次のとおりです。 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#4387427

パッケージタイプ$(eval $(kernel-module))は、基本的にすべてをセットアップします。