文档
Documentation/kbuild/modules.txt
在ubuntu上构建模块
Makefile例子
KVERS = $(shell uname -r)
obj-m += my_module.o
build: kernel_modules
kernel_modules:
make -C /lib/modules/$(KVERS)/build M=$(CURDIR)modules
clean:
make -C /lib/modules/$(KVERS)/build M=$(CURDIR)clean
说明
- -C参数表示改变目录。这里的作用是到源码树目录顶层去make。
- KVER 变量是获得内核的版本,以便后面找到正确的源码目录。
- M=xxx 是给linux内核源码的Makefile的参数,指明构建哪一个模块。
- make modules,modules是linux内核Makefile的一个目标。
Android中使用linux modules
- 将module源码放入源码树目录,修改对应的Kconfig和Makefile
- 也可直接修改Makefile,在其中添加 obj-m += xxx.o
- 在Makefile中添加 ccflags-y += -fno-pic
- 修改defconfig,使能 CONFIG_MODULES 和 CONFIG_MODULES_UNLOAD
- 编译内核
- 编译完成后,找到xxx.ko。将其push到手机中,用insmod安装。