Hi����ӭ����Ƕ��ʽ��ѵ�߶�Ʒ�� - ����Զ����������<�����ܲ�����>��רעǶ��ʽ����ʦ����15�꣡
��ǰλ��: > ����Զ���������� > Ƕ��ʽѧϰ > ��ʦ���� > ����ģ��Makefile����
����ģ��Makefile����
ʱ�䣺2017-01-05���ߣ�����Զ��

�ȿ�һ�´���

ifeq ($(KERNELRELEASE),)
        KERNELDIR ?= /home/linux/linux-2.6.22.6
        PWD := $(shell pwd)
        modules:
                $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
        modules_install:
                $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
        clean:
                rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
        .PHONY: modules modules_install clean
        else
                obj-m := myhello.o
        endif

������һЩ�����dz������Ǽ����ģ���һ��ifeq ($(KERNELRELEASE),)Ŀǰ�������ô�������������ָ��LinuxԴ���Ŀ¼�µ�Makefile�����ں�ʱ��KERNELRELEASE��ᱻ���壬��ô����Ǵ�Դ���Ŀ¼��ʼ��make��Ὣmyhello.oģ�������ںˡ�

KERNELDIR ?= /home/linux/linux-2.6.22.6������Ƕ�KERNELDIR���и�ֵ����������Ǻ��������õ���ָ���ں�Դ��Ŀ¼�õġ�

PWD := $(shell pwd)������Ƕ�PWD�������и�ֵ�������ǽ�$(shell pwd)�ķ��ؽ������õ�ǰĿ¼��·����ֵ��PWD��������������ں���ָ������Ҫ����������������ڵ�λ�á�

modules:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

�����Makefile�Ĺ��������$(MAKE)���൱��make��-C ѡ���������ָ����ǰ����Ŀ¼ת�Ƶ�����ָ����λ�á�“M=”ѡ��������ǣ����û���Ҫ��ij���ں�Ϊ��������һ���ⲿģ��Ļ�����Ҫ��make modules �����м���“M=dir”��������Զ�������ָ����dirĿ¼�в���ģ��Դ�룬������룬����KO�ļ���

modules_install:
                $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

���������ģ��İ�װ����Makefile������“lib\/modules”���Կ����������䣬ͨ���Ķ��㲻���ҵ����“MODLIB”���ô�����������ָ����װ·���ģ�������“INSTALL_MOD_PATH”����Ϊ�ա�

MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
        Export MODLIB

.PHONY: modules modules_install clean

��仰�ǵ������DZ�֤modules,modules_install,clean������������������ɡ�.PHONY ����һ������Ŀ�����ƣ����������ģ��磺

.SUFFIXES��.DEFAULT��.PRECIOUS��.INTERMEDIATE��.SECONDARY��.SECONDEXPANSION��.DELETE_ON_ERROR��.IGNORE .LOW_RESOLUTION_TIME .SILENT .EXPORT_ALL_VARIABLES .NOTPARALLEL

���ǵľ����÷����Բο�GNU�ֲ��е�Special Built-in Target Names�½ڡ�

.PHONYĿ��ľ�����˼�������Makefile�Ĺ���Ŀ¼�������磺modules,modules_install,clean���ļ�ʱ������������Ƿ�ֹ�����ķ�ʽ��

��������
�����б���������۽������ѱ����˿���������������վͬ����۵��֤ʵ��������