[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

posted @   七色彩虹k  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
点击右上角即可分享
微信分享提示