当前位置: 代码迷 >> 驱动开发 >> 编写内核模块的Makefile,该如何处理
  详细解决方案

编写内核模块的Makefile,该如何处理

热度:141   发布时间:2016-04-28 11:21:03.0
编写内核模块的Makefile
在编译内核模块的Makefile中

$(MAKE) -C $(KERN_DIR) M=$(PWD) modules  



里面的MAKE变量是什么?编译内核模块用的是哪个编译器 gcc or 交叉编译工具 那MAKE代表哪一个?  
是内核源码树下设置的makefile设置的变量吗? 是在哪里定义的?麻烦找一下定义

 


------解决方案--------------------
MAKE 的内置环变量是make软件境变量,默认值就是make。你编译内核将来要运行的架构不同,使用的编译器就不同,可以在你的makefile里指定,但前提条件是你编译模块所用的内核源代码使用的编译器与你的makefile相同。你也可以不在makefile里指定,使用CC变量,这个变量会继承你所用内核源代码的编译器。还有之所以使用MAKE变量而不直接使用make是有原因的,MAKE变量可以使上层使用的make程序和下层使用的make程序一致。在递归调用make的时候很有用,这样你在使用 make -t 来更新所有文件的时间戳的时候,在子目录下也同样执行
如:subsystem:
cd subdir && $(MAKE)
如果把$(MAKE)换成make,那么你在make -t 的时候就不会进入subdir执行make -t,子目录的时间戳就更新不了。而使用MAKE变量就可以达到这个目的
  相关解决方案