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模块⽅式
makefile phonyelse
obj-m := xxx.o
endif
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
简单目录结构Makefile
« 上一篇
Makefile编译静态库
下一篇 »
发表评论