linux gcc 创建,如何在Linux上为gcc创建一个简单的makefile?

有趣的是,我不知道make会默认使用C编译器给出有关源文件的规则。

无论如何,一个演示简单的Makefile概念的简单解决方案是:

HEADERS = program.h headers.h

default: program

program.o: program.c $(HEADERS)

gcc -c program.c -o program.o

program: program.o

gcc program.o -o program

clean:

-rm -f program.o

-rm -f program(请记住make需要tab而不是space indentation,所以一定要在复制时修复)

但是,要支持更多C文件,您必须为每个文件制定新规则。因此,改善:

HEADERS = program.h headers.h

OBJECTS = program.o

default: 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 = prog

LIBS = -lm

CC = gcc

CFLAGS = -g -Wall

.PHONY: default all clean

default: $(TARGET)

all: default

OBJECTS = $(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实用程序的wildcard和patsubst功能在当前目录中自动包含.c和.h文件,这意味着当您将新代码文件添加到目录时,您不必更新Makefile。但是,如果要更改生成的可执行文件,库或编译器标志的名称,则只需修改变量即可。

在任何一种情况下,请不要使用autoconf。我求你! :)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值