在源码树外编译模块
有时可能想要对还未导入上游内核的驱动程序等与内核源码树分开提供的源代码进行编译,并将其作为模块安装。
在这种情况下,只要驱动程序源代码的Makefile编写正确,就可以按照下列方法进行编译、安装。
$make-C/lib/modules/$(uname-r)/build M=$PWD
make-C/lib/modules/$(uname-r)/build M=$PWD modules_install
当为make指定-C选项时,make首先会读取指定目录下的Makefile。这里指定为-C选项的变量,是指向当前正在运行的内核源目录的符号链接。也就是说,这个驱动程序与当前运行的内核是在完全相同的环境下创建,具体来说,就是使用头文件或.config文件来创建的。
指定M=$PWD是为了告知Linux内核的创建操作正在源码树外执行创建操作。