Linux如何创建makefile文件,如何在Linux上为gcc创建简单的makefile?

552fd961864506c50db3d19e8d054074.png

侃侃尔雅

有趣的是,在给定有关源文件的规则的情况下,我不知道make是否会默认使用C编译器。无论如何,一个演示简单Makefile概念的简单解决方案是:HEADERS = program.h headers.hdefault: programprogram.o: program.c $(HEADERS)    gcc -c program.c -o program.oprogram: program.o    gcc program.o -o programclean:    -rm -f program.o    -rm -f program(请记住,make需要使用制表符而不是空格缩进,因此在复制时一定要解决此问题)但是,要支持更多的C文件,您必须为每个文件制定新规则。因此,要改善:HEADERS = program.h headers.hOBJECTS = program.odefault: program%.o: %.c $(HEADERS)    gcc -c $< -o $@program: $(OBJECTS)    gcc $(OBJECTS) -o $@clean:    -rm -f $(OBJECTS)    -rm -f program我试图通过省略通常在makefile文件中看到的$(CC)和$(CFLAGS)之类的变量来使其尽可能地简单。如果您有兴趣解决此问题,希望我给您一个良好的开端。这是我想用于C源代码的Makefile。随意使用它:TARGET = progLIBS = -lmCC = gccCFLAGS = -g -Wall.PHONY: default all cleandefault: $(TARGET)all: defaultOBJECTS = $(patsubst %.c, %.o, $(wildcard *.c))HEADERS = $(wildcard *.h)%.o: %.c $(HEADERS)    $(CC) $(CFLAGS) -c $< -o $@.PRECIOUS: $(TARGET) $(OBJECTS)$(TARGET): $(OBJECTS)    $(CC) $(OBJECTS) -Wall $(LIBS) -o $@clean:    -rm -f *.o    -rm -f $(TARGET)它使用make实用程序的通配符和patsubst功能在当前目录中自动包括.c和.h文件,这意味着在将新代码文件添加到目录中时,无需更新Makefile。但是,如果要更改生成的可执行文件,库或编译器标志的名称,则只需修改变量即可。无论哪种情况,请不要使用autoconf。我求求你!:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值