「linux/init.hが無い」とエラーが出る。
Hello, hacker school! とカーネルログに表示するだけのモジュールをコンパイルしようとしたら以下のincludeエラーが出ました。
発生している問題・エラー
ソース ファイルを開けません "linux/init.h"C/C++(1696)
fatal error: linux/init.h: そのようなファイルやディレクトリはありません
3 | #include <linux/init.h> // included for __init and __exit macros
| ^~~~~~~~~~~~~~
compilation terminated.
該当するソースコード
#include <linux/module.h> // included for all kernel modules
#include <linux/kernel.h> // included for KERN_INFO
#include <linux/init.h> // included for __init and __exit macros
static int __init hello_init(void)
{
printk(KERN_INFO "Hello, hacker school!!!\n");
return 0; // Non-zero return means that the module couldn't be loaded.
}
static void __exit hello_cleanup(void)
{
printk(KERN_INFO "I am dead.\n");
}
module_init(hello_init);
module_exit(hello_cleanup);
自分で試したこと
https://stackoverflow.com/questions/28423477/linux-init-h-no-such-file-or-directory/28425142
ここで解決方法が書かれていたので、この通りに設定しました。
apt install linux-headers-5.10.0-9-amd64
のインストール
Makefileの「KERNELDIR」と「PWD」の変数の設定
0