生成文件未生成可执行文件



我对makefile相当陌生。我正在尝试创建一个编译 yu.c 的 makefile 并链接 yu.c 以获取一个名为 yu 的可执行文件。
下面是我的代码。我正在使用 make -f mymakefile 来运行该文件,每次运行它时,只有 gcc -c yuFile.c 完成。我错在哪里?

CC=gcc
yu.o: yuFile.c
    ${CC} -c yuFile.c
yu: yuFile.o
    ${CC} yu -o yuFile.o
run-c: yu
    ./yu
clean:
    rm -f "*.o" core

未指定目标的make会成为文件中的第一个目标,因此在您的情况下,它等效于 make yu.o .

通常,您创建第一个目标all以便构建所有内容:

all: yu
.PHONY: all

(请注意,如果已经有名为 all 的文件,该.PHONY可以防止make不执行任何操作)。

值得指出的是:你的论点在yu目标中颠倒了。它应该是

yu: yuFile.o
    ${CC} yuFile.o -o yu

或更一般

yu: yuFile.o
    ${CC} $^ -o $@

$^ 表示所有先决条件,$@ 表示目标,如自动变量中所述)。

第一个目标是在未指定参数时选取的目标。标准是首先有一个"全部"目标:

全部:于

此外,您的"yu"目标不正确。

yo: yufile.o
   $(CC) -o $@ $^

应该工作

相关内容

  • 没有找到相关文章

最新更新