C 中的一个简单 makefile - 与 C 文件名称不同的目标文件

A simple makefile in C - Object file with different name from C file

我正在尝试为我的程序创建一个 makefile(一个非常简单的)。 我的文件是 lab.clab.h。 我需要创建 lab.c 的目标文件并使用不同的名称 (matlib.o),并在没有链接的情况下进行编译。

这是我的尝试:

matlib: matlib.o lab.o
    gcc -c matlib.o
matlib.o: lab.c lab.h
    gcc -c lab.c

但是,我遇到了这个错误:

 No rule to make target 'matlib.o', needed by 'matlib'. Stop.

我做错了什么?

您应该告诉 gcc 使用 -o 标志以不同的名称输出目标文件。

正确的食谱是

matlib: matlib.o lab.o
    gcc matlib.o -o matlib
matlib.o: lab.c lab.h
    gcc -c lab.c -o matlib.o