makefile ------ 编译驱动的 makefile 和编译应用的 makefile 的对比

驱动的makefile

obj-m:=HelloWorld.o
KDIR:=/home/god/Desktop/raspberry/linux    # path of kernel file
PWD:=$(shell pwd)  # path of current file
all:     $(MAKE) -C $(KDIR) M=$(PWD) modules
     @rm -rf *.mod.*  
     @rm -rf *.o  
     @rm -rf Module.* 
     @rm -rf modules.*
clean:
     $(MAKE) -C $(KDIR) M=$(PWD) clean

变量 obj-m、M 是内核文件夹下 makefile 要用到的变量

make -C 表示会先进入路径 KDIR 下,然后生成目标 modules

驱动的 makefile 没有使用编译器

应用的makefile

EXEC = can_test
OBJS = can_test.o
SRC  = can_test.c

CC = arm-none-linux-gnueabi-gcc
CFLAGS += 
LDFLAGS += 
all:$(EXEC)

$(EXEC):$(OBJS)
    $(CC) $(LDFLAGS) -o $@ $(OBJS) 

%.o:%.c
    $(CC) $(CFLAGS) -c $< -o $@ 

clean:
    @rm -vf $(EXEC) *.o

直接调用编译器

原文地址:https://www.cnblogs.com/god-of-death/p/14813792.html