나는 리눅스 커널을 가지고 놀면서 몇몇 모듈을 작성하려고 노력하고 있습니다. /drivers/my_module/my_module.c 아래의 Linux 소스 코드에 추가했습니다. (저는 커널 4.9를 사용하고 있으며 데비안 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에 정의되지 않은 변수와 관련이 있다고 추측하지만 다른 모듈이 동일한 전략을 사용하고 커널과 함께 컴파일되는 것 같습니다.
그래서 뭔가 빠진 것 같지만 실제로 무엇인지 알 수는 없습니다.