LED驱动程序的makefile文件



#make   //编译驱动模块

由于make没有指定选项和目标,将默认使用Makefile文件,并且先去执行all下的文件

Makefile的内容:

 

KERN_DIR =/opt/workspace/linux-3.2.0-psp04.06.00.10/

//KERN_DIR表示内核源码目录,这种方式适用于嵌入式开发的交叉编译,KERN_DIR目录中包含了内核驱动模块所需要的各种头文件及依赖。

 

all:

make-C $(KERN_DIR) M=`pwd` modules

 

clean:

make-C $(KERN_DIR) M=`pwd` modules clean

rm -rf modules.order

 

obj-m+=myleds.o

 

-c表示 指定进入指定的目录,即KERN_DIR,是内核源代码目录,调用该目录顶层下的makefile,目标为moudules


M=`pwd`选项让该makefile在构造moudules目标之前返回到模块源代码目录并在当前目录生成obj-m指定的mvleds.o目标模块。


Clean这个目标表示将模块清理掉


Obj-m +=mvleds.o即指定当前目录要生成的目标模块,然后moudules目标指向obj-m变量中设定的模块。

 

拓展:

 编译内核很简单,只需要配置完毕后执行make命令,将指定的文件编译进内核

bzImage或者编译成模块。

make = makebzImage + make modules

因此如果值编译内核,即只编译配置文件中-y选项,可以直接用命令

make bzImage

如果值编译模块,即只编译配置文件中的-m选项,可以之直接使用命令

make modules

模块可以编译当然也可以清除,使用命令

make modulesclean

如果只想单独编译一个模块,可以使用命令

makeM=drivers/test/ modules //只单独编译drivers/test中的.ko

makeM=drivers/test/ modules clean //清除

上面的是在内核目录下的操作,但当我写驱动时,我并不可能在内核目录下编写,但我编译时却要依赖内核中的规则和Makefile,所以就有了以下的方法,同时这也是一般的编写驱动时Makefile的格式。

指定内核Makefile并单独编译

make -C/root/linux-2.6.29 M=`pwd` module

make -C/root/linux-2.6.29 M=`pwd` module clean

//-C 指定内核Makefile的路径,可以使用相对路径。

//-M 指定要编译的文件的路径,同样使用相对路径。

编译生成的模块可以指定存放的目录

make -C /root/linux-2.6.29 M=`pwd` modules_installINSTALL_MOD_PATH=/nfsroot

你可能感兴趣的:(学习笔记,整理,分享,嵌入式实验)