私はLinuxカーネルで遊んでいくつかのモジュールを書こうとしています。 /drivers/my_module/my_module.cの下のLinuxソースコードに追加しました。 (私はカーネル4.9を使用しており、Debian 9では4.1を作成します)
ここにいる:
#include <linux/module.h>
__init static int my_module_init(void)
{
pr_info("Hello World!\n");
return 0;
}
__exit static void my_module_exit(void)
{
return;
}
module_init(my_module_init);
module_exit(my_module_exit);
私は単純なKconfigとMakefileを書きました:Makefile:
obj-$(CONFIG_MY_MODULE) += my_module.o
Kconfig:
menu "My first module"
config MY_MODULE
bool "My module"
help
The dumbest kernel module you could find on the market !
endmenu
/driversのKconfigとMakefileにこれを追加しました。
カーネル構成:source "drivers/my_module/Kconfig"
ファイル生成:obj-$(CONFIG_MY_MODULE) += my_module/
これまではとても良いと思いましたが、CONFIG_MY_MODULE=y
Linux用の.configファイルに私のファイルを追加したときにmakeを実行したときにコンパイルされませんでした(コンパイル出力やカーネルの起動時にトレースに表示されませんでした)。表示されます) なぜそうなのかわかりません。私はこれがドライバ/ Makefileで定義されていない変数に関連していると思いますが、他のモジュールが同じ戦略を使用してカーネルでコンパイルされるようです。
だから何か欠けているようですが、実際に何であるかはわかりません。