makefile的注释


#TAGET代表应用程序

TARGET          = test_xxx
#交叉编译连前缀
CROSS_COMPILE   = arm-linux-
#交叉编译工具arm-linux-gcc
CC              = $(CROSS_COMPILE)gcc
#如果KERNELRELEASE==空,注意逗号后面不加参数表示KERNELRELESE未设置为空
ifeq ($(KERNELRELEASE),)
#设置KERNELDIR为/root/kernel/linux-2.6.24.4,?=代表的意思为,如果KERNELDIR已设置则不作任何处理,如果未设置则赋予?=后面的值
 #   KERNELDIR ?= /root/kernel/linux-2.6.24.4
KERNELDIR ?= /root/test/linux-2.6.24.4
#PWD代表当前路径,:=代表一经赋值不在改变,功能类似宏定义;shell pwd代表在shell输入pwd命令中取得的路径
    PWD := $(shell pwd)
#第一个目标all由应用程序$(TARGET)和驱动模块modules两部分组成
all: $(TARGET) modules
#应用程序的生成方法,arm-linux-gcc -o test_xxx test_xxx.c
$(TARGET):
$(CC) -o $(TARGET) $(TARGET).c
######################################################################################################################
#驱动模块的生成方法, make -C /root/kernel/linux-2.6.24.4 M=$(PWD) modules                                            #
#                                                                                                                    #
#此语句可如下解释:                                                                                                  #
#    主句为:make modules                                                                                            # 
#    -C /root/kernel/linux-2.6.24.4为设置当前路径                                                                    #
#    M=$(PWD)语法意思为,声明一个变量M,并且给其赋值为$(PWD);语义意思为,在 $(PWD)目录下寻找驱动模块                #
#                                                                                                                    #
#此语句的执行流程为:                                                                                                # 
#    当前的makefile文件调用$(KERNELDIR)下的makefile,并且M变量对$(KERNELDIR)的makefile可见,执行编译驱动模块的功能   #
#                                                                                                                    #
######################################################################################################################


modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
#删除已生成的目标文件
clean:
rm -rf *.o *.ko *.mod.c $(TARGET)
#容错处理
.PHONY: modules clean
#定义为obj-m模块方式
else
obj-m := xxx.o
endif

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值