通用的典型的makefile

模板1

CC = arm-linux-gnueabihf-gcc
SRCS = $(wildcard *.c)
SRCS := $(filter-out no_compile1.c no_compile2.c,$(SRCS))
OBJS = $(patsubst %c, %o, $(SRCS))
# -I指定头文件目录
INCLUDE = -I./
# -L指定库文件目录,-l指定静态库名字(去掉文件名中的lib前缀和.a后缀)
LIB = -L . -lpthread
# 开启编译warning和设置优化等级
CFLAGS = -Wall -g -rdynamic -funwind-tables -ffunction-sections

TARGET = reader

.PHONY:all clean

all: $(TARGET)
# 链接时候指定库文件目录及库文件名
$(TARGET): $(OBJS)
	$(CC) $(LIB) -o $@ $^ 
 
# 编译时候指定头文件目录
%o:%c
	$(CC) -c $^ $(INCLUDE) $(CFLAGS) 

clean:
	rm -f $(OBJS) $(TARGET)

模板2

CC = gcc
SRCS = $(wildcard ./test/*.c)
SRCS += $(wildcard ./nist_sts/*.c)
OBJS = $(patsubst %c, %o, $(SRCS))
# -I指定头文件目录
INCLUDE = -I./nist_sts/include/ -I/usr/local/include/
# -L指定库文件目录,-l指定静态库名字(去掉文件名中的lib前缀和.a后缀)
LIB = -L /usr/local/lib/ -lcrypto -lssl
# 开启编译warning和设置优化等级
CFLAGS = -g -Wall 
#-rdynamic -funwind-tables -ffunction-sections

TARGET = reader

.PHONY:all clean

all:$(TARGET)
$(TARGET):$(OBJS)
	$(CC)  -o $@ $^ $(LIB)
%.o:%.c
	$(CC) $(CFLAGS) $(INCLUDE) -o $@ -c $< 

clean:
	rm -f $(OBJS) $(TARGET)

 

你可能感兴趣的:(linux)