[linux]记录一次makefile的相关使用
问题
设某个程序由四个C语言源文件组成,分别是a.c、b.c、c.c、d.c,其中b.c和d.c都使用了defs.h中的声明,最后生成的可执行文件名为pgm。试为该程序编写相应的makefile文件。
程序
a.c
#include "defs.h"
void a()
{
printf("a\n");
}
int main()
{
a();
b();
c();
d();
printf("lunix\n");
return 0;
}
b.c
#include "defs.h"
void b()
{
printf("b\n");
}
c.c
#include "defs.h"
void c()
{
printf("c\n");
}
d.c
#include "defs.h"
void d()
{
printf("d\n");
}
defs.h
#include <stdio.h>
extern void a();
extern void b();
extern void c();
extern void d();
extern int main(); // 声明main函数,不要定义它
makefile
CC = gcc
CFLAGS = -Wall -Wextra -std=c11
SRCS = a.c b.c c.c d.c
OBJS = $(SRCS:.c=.o)
DEPS = defs.h
TARGET = pgm
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) $^ -o $@
%.o: %.c $(DEPS)
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJS) $(TARGET)
注意:makefil文件编写时应注意空格和tab键的区别,在上述程序中,使用了tab
运行
先make一下
发现生成了一些文件
运行可执行文件pgm
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫