温馨提示×

debian gcc怎样写Makefile

小樊
52
2026-09-10 19:18:28
栏目: 智能运维

在 Debian 下用 gcc 写 Makefile,其实和在其他 Linux 系统上基本一样。下面从最简单到较规范给你几个示例。


一、最简 Makefile(单文件)

假设有 hello.c:

#include <stdio.h>

int main() {
    printf("Hello Debian\n");
    return 0;
}

Makefile(注意:命令行前是 Tab,不是空格)

hello: hello.c
	gcc -o hello hello.c

clean:
	rm -f hello

使用:

make
./hello
make clean

二、多文件项目(常见写法)

假设:

main.c
foo.c
foo.h

Makefile

CC = gcc
CFLAGS = -Wall -Wextra -O2

TARGET = app
OBJS = main.o foo.o

$(TARGET): $(OBJS)
	$(CC) $(CFLAGS) -o $(TARGET) $(OBJS)

main.o: main.c foo.h
	$(CC) $(CFLAGS) -c main.c

foo.o: foo.c foo.h
	$(CC) $(CFLAGS) -c foo.c

clean:
	rm -f $(OBJS) $(TARGET)

三、使用自动推导(更简洁)

CC = gcc
CFLAGS = -Wall -O2

TARGET = app
OBJS = main.o foo.o

$(TARGET): $(OBJS)
	$(CC) -o $@ $^

%.o: %.c
	$(CC) $(CFLAGS) -c $<

clean:
	rm -f $(OBJS) $(TARGET)

四、Debian 常见注意点

1. 安装 gcc

sudo apt update
sudo apt install build-essential

build-essential 包含:

  • gcc
  • g++
  • make

2. 调试版本

CFLAGS = -g -Wall

3. 链接数学库(常见坑)

如果用 math.h:

LDLIBS = -lm
$(TARGET): $(OBJS)
	$(CC) -o $@ $^ $(LDLIBS)

五、推荐模板(可直接抄)

CC = gcc
CFLAGS = -Wall -Wextra -O2
TARGET = app
SRCS = main.c foo.c
OBJS = $(SRCS:.c=.o)

$(TARGET): $(OBJS)
	$(CC) -o $@ $^

%.o: %.c
	$(CC) $(CFLAGS) -c $<

clean:
	rm -f $(OBJS) $(TARGET)

.PHONY: clean

如果你愿意,可以告诉我:

  • 是 C 还是 C++
  • 单文件 / 多文件 / 大型项目
  • 是否用 多线程 / 第三方库

我可以直接帮你写一个可用的 Makefile。

0 踩