静态编译:
将驱动直接编译进内核,与内核形成一个整体运行,生命周期从内核启动开始动内核运行结束。
动态编译:
以模块的形式编译,在内核运行以后,通过命令加载到内核里,和内核一起运行,通过卸载命令卸载模块。
优点:使用灵活方便,适合开发过程中使用
内部编译:
在内核源码树中编译
该方法,以后将系统移植的时候讲
外部编译
在内核源码目录外编译
内核关于构建外部模块的说明文档:
kernel-3.4.39/Documentation/kbuild/module.txt
make -C /lib/modules/`uname -r`/build M=$PWD modules
-C:执行指定路径下的Makefile
M :指定当前路径
uname -r :显示当前内核版本号
命令置换:tab键上面的按键,` `
KERNDIR:= /lib/modules/`uname -r`/build
PWD:= `pwd`
obj-m:=demo.o
module:
make -C $(KERNDIR) M=$(PWD) modules
clean:
make -C $(KE RNDIR) M=$(PWD) clean