写一个常用makefile

本文深入探讨了Makefile的配置技巧,包括变量设置、目标规则、依赖管理和清理操作。通过具体示例,如ARM交叉编译环境下的动态库构建过程,讲解了如何使用Makefile进行高效的软件项目管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DIR_INC = ./include
DIR_SRC = ./src
DIR_OBJ = ./obj
DIR_BIN = ./bin
DIR_LIB = ./lib

#wildcard : 扩展通配符
#notdir : 去除路径
#patsubst :替换通配符
SRC = $(wildcard ${DIR_SRC}/*.c)  
OBJ = $(patsubst %.c,${DIR_OBJ}/%.o,$(notdir ${SRC})) 
							 
#TARGET = test
TARGET = libsm2.so
BIN_TARGET = $(DIR_BIN)/${TARGET}
#LIB = -L$(DIR_LIB) -lssl -lcrypto  -ldl  #-lpthread 
LIB = -L$(DIR_LIB) -lssl -lcrypto -ldl
#-I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录,
#寻找的顺序是:/home/hello/include-->/usr/include-->/usr/local/include
#-L /home/hello/lib表示将/home/hello/lib目录作为第一个寻找库文件的目录,
#寻找的顺序是:/home/hello/lib-->/lib-->/usr/lib-->/usr/local/lib
#-lworld表示在上面的lib的路径中寻找libworld.so动态库文件(如果gcc编译选项中加入了“-static”表示寻找libworld.a静态库文件)
CC = arm-linux-androideabi-gcc#gcc
CFLAGS = -Wall -I${DIR_INC} $(LIB) 
${BIN_TARGET}:${OBJ}
	$(CC) -fPIC -shared $^ -o $@ $(CFLAGS) 
					     
${DIR_OBJ}/%.o:${DIR_SRC}/%.c
	$(CC) -fPIC -c  $< -o $@ -I${DIR_INC}  
.PHONY:clean
clean:
	find ${DIR_OBJ} -name *.o | xargs rm -rf 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值