学习:https://blog.csdn.net/liangkaiming/article/details/6267357
#交叉编译工具链路径 CROSS_COMPILE = /opt/toolchains/arm-sunnorth-linux/bin/arm-sunnorth-linux-gnueabi- CC = $(CROSS_COMPILE)gcc #压缩工具 STRIP = $(CROSS_COMPILE)strip #编译参数 CFLAGS := -Wall -O2 -g CFLAGS += -I include src #链接库 LDFLAGS := -lm -lpthread LDFLAGS += -L./lib -lcurl TARGET = libDotUpload.a #获取子目录src下的所有c文件(这一步因为参数是src/*.c获取子目录src下的文件,所以SRC内的文件名会是src/hello.c这样带目录的) SRC = $(wildcard src/*.c) #将SRC变量内的所有c文件名的后缀.c改为.o, src/hello.c变为src/hello.o OBJ = $(patsubst %.c,%.o, $(SRC)) #OBJ中的.o文件名称都是带目录的,这一步是将目录路径去掉,例如上面的src/hello.o变为hello.o OBJNODIR = $(notdir $(patsubst %.c,%.o, $(SRC))) all: #编译.c文件为.o文件,虽然SRC是带src路径的,但是编译命令是在当前目录执行,所以生成的.o文件是在当前目录下 $(CC) $(CFLAGS) $(LDFLAGS) -c $(SRC) #压缩.o文件 $(STRIP) $(OBJ) #生成静态库 ar cr $(TARGET) $(OBJ) #创建输出目录output mkdir -p output/lib output/obj #将.o文件和静态库移至output目录 mv *.o output/obj mv $(TARGET) output/lib clean: rm -f $(shell find -name "*.o") rm -rf output rm -f $(TARGET)