简单makefile运用clang编译工具和ar压缩工具生成.a文件

SHELL := /bin/sh
PATH = .../toolchains/clang/bin/ #clang工具路径

CC := $(PATH)clang
AR := $(PATH)llvm-ar#clang自带的ar工具

CROSS_CC:=clang
CROSS_AR:=ar

CFLAGS = -Wall -Wextra -pedantic -std=c11

OUTLIB := TARGETFP.a    #生成目标文件TARGETFP.a
# 设置源文件列表
SOURCES = main.c 

OBJS = $(patsubst %.c,%.o,$(SOURCES))
# 默认目标
all: $(OUTLIB)

$(OUTLIB):$(OBJS)
    $(AR) -rv $(OUTLIB) $(OBJS)
    

.PHONY:clean
clean:
    @echo "hah"
    @/usr/bin/find . -name "*.o"  | /usr/bin/xargs /bin/rm -f
    @/bin/rm -rf *.a

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用Makefile编译不同路径下的.c和.h文件。下面是一个示例Makefile: ``` CC=gcc CFLAGS=-I./include SRC=./src OBJ=./obj BIN=./bin $(BIN)/myprogram: $(OBJ)/main.o $(OBJ)/helper.o $(CC) -o $@ $^ $(OBJ)/main.o: $(SRC)/main.c $(SRC)/helper.h $(CC) $(CFLAGS) -c $< -o $@ $(OBJ)/helper.o: $(SRC)/helper.c $(SRC)/helper.h $(CC) $(CFLAGS) -c $< -o $@ .PHONY: clean clean: rm -f $(OBJ)/*.o $(BIN)/myprogram ``` 在这个Makefile中,我们假设我们有一个名为myprogram的程序,它的源代码位于./src目录中,头文件位于./include目录中,目标文件应该被编译到./obj目录中,最终的可执行文件应该被放置在./bin目录下。 我们定义了一些变量,以便在后面的规则中使用。CC变量指定使用的编译器,CFLAGS变量指定编译选项,SRC变量指定源代码目录,OBJ变量指定目标文件目录,BIN变量指定可执行文件目录。 在这个Makefile中,我们定义了三个规则:myprogram、main.o、helper.o。myprogram规则指定了可执行文件应该由哪些目标文件组成。main.o和helper.o规则分别指定了如何编译文件和头文件,以及如何生成目标文件。 最后我们还定义了一个clean规则,用于删除生成的目标文件和可执行文件。 使用make命令来编译和链接程序: ``` $ make ``` 这将会自动编译所有的.c和.h文件,并将生成的目标文件和可执行文件存储到相应的目录中。 ``` $ make clean ``` 这将会删除所有生成的目标文件和可执行文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值