刚入门。关于Makefile的解释大多如下:
1.执行make命令,读取当前目录下的Makefile
2.因为没有定义KERNELRELEASE,所以执行else部分
3.执行default目标,即执行命令 “ $(MAKE) -C $(KERNELDIR) M=$(PWD) modules”
4.该命令相当于重新执行make命令,但是该make命令首先调用-C选项所指的路径下的makefile,这个makefile定义了KERNELRELEASE变量,然后执行modules目标。
5.modules目标又调用了一次make命令,执行当前目录下的makefile文件,就把obj-m变量定义了。然后又执行make命令生成最终的.ko文件。
其中“ $(MAKE) -C $(KERNELDIR) M=$(PWD) modules”中的“module”加入的话make之后也是显示make[1]: Nothing to be done for `modules'.
那这个module该怎么起作用,怎么体现出来。
------解决方案--------------------
modules”中的“module”加入的话make之后也是显示make[1]: Nothing to be done for `modules'.
那这个module该怎么起作用,怎么体现出来。
回答:
module 是一个参数,就是告诉内核在编译时,把此驱动程序编成单独的模块,不编译进内核,
在2.6以上的内核会生成xxxx.ko文件,如果是2.4的内核会生成.o文件。然后你可当独加载此模,用insmod xxx.ko