kernel] 일반 linux 모듈 삽입
안드로이드 커널 모듈을 만들기에 앞서서 리눅스를 기반으로 모듈을 만들어보자...
gedit hello.c
를 통해 c파일을 만든다.
그 후
아래의 소스를 작성한다.
#include<linux/init.h>
#include<linux/module.h>
static int hello_init(void) {
printk("Hello******************\n");
return 0;
}
static void hello_exit(void) {
printk("Bye+++++++++++++++++++++++\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
소스가 다 작성 되었다. Makefile을 만들자
gedit Makefile
로 파일을 생성한다.
# this
export ARCH=x86
export CROSS_COMPILE=
obj-m := hello.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -rf *.ko
rm -rf *.mod.*
rm -rf .*.cmd
rm -rf *.o
ARCH를 따로 설정하는 이유는 혹시 안드로이드 커널을 컴파일하면서 ARCH를 arm으로 설정해놨을 수도 있기 때문
모든 파일이 만들어지면
make
명령을 통해 컴파일!!
그 후
insmod hello.ko
를 하면 모듈 적재!
rmmod hello.ko
를 하면 모듈 삭제!!