makefile不生成可执行文件

时间:2012-10-14 17:47:59

标签: linux bash makefile

我在makefile上相当新。我正在尝试创建一个编译yu.c和链接yu.c的makefile来获取一个名为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

2 个答案:

答案 0 :(得分:2)

未指定目标的

make构成文件中的第一个目标,因此在您的情况下,它等同于make yu.o

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

all: yu
.PHONY: all

(请注意,如果已有名为.PHONY的文件,则make会阻止all无效。

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

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

或更一般地

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

$^表示所有先决条件,$@表示目标,如Automatic Variables中所述。

答案 1 :(得分:0)

第一个目标是未指定参数时选择的目标。 标准是首先有一个'所有'目标:

全部:yu

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

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

应该有效

相关问题