![사용자 정의 커널 모듈이 컴파일되지 않았습니다.](https://linux55.com/image/190588/%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%A0%95%EC%9D%98%20%EC%BB%A4%EB%84%90%20%EB%AA%A8%EB%93%88%EC%9D%B4%20%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%90%98%EC%A7%80%20%EC%95%8A%EC%95%98%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
나는 리눅스 커널을 가지고 놀면서 몇몇 모듈을 작성하려고 노력하고 있습니다. /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에 정의되지 않은 변수와 관련이 있다고 추측하지만 다른 모듈이 동일한 전략을 사용하고 커널과 함께 컴파일되는 것 같습니다.
그래서 뭔가 빠진 것 같지만 실제로 무엇인지 알 수는 없습니다.