gpt4 book ai didi

c - 使: *** [clean] Error 1 and No rule to make target errors

转载 作者:行者123 更新时间:2023-11-30 15:07:11 25 4
gpt4 key购买 nike

我有两个c源文件,prog2.cgetopts.c .我的prog2.cgetopts.c文件相互链接。我根据我的作业方向创建了以下 makefile:

OPTS= -g -c -Wall -Werror
efile = shell
ofile = prog2.o getopts.o
all: gcc -0 $(efile) <$(ofile)>

shell: \
prog2.o getopts.o
gcc prog2.o getopts.o -o shell

prog2.o: \
prog2.c
gcc $(OPTS) prog2.c

getopts.o: \
getopts.c
gcc $(OPTS) getopts.c

clean:
rm $(ofile) $(efile)

方向说:对于最终链接,我需要使用 gcc -o efile <ofiles>其中 efile 是可执行文件(我相信这里将是 shell),ofiles 是所有 .o 的列表。文件。然后我被告知命令make cleanmake .对于make clean命令我收到以下错误:无法删除...没有文件或目录错误,后跟 make:***[clean] Error 1.当我这样做时make命令,我收到以下错误: make: *** 没有规则来创建“all”需要的目标“gcc”。停止。我浏览了一些网页和类似的问题,但我真的不明白。

最佳答案

首先,在 make 文件中构建目标的命令不会与目标名称位于同一行,而是位于以下各行,每行前面都有一个制表符...因此 gcc -0 $(efile) <$(ofile)>放错地方了。

其次,方向中的尖括号可能并不意味着实际出现在您的命令中。

此外,如果一个目标需要首先构建其他目标,则这些目标应作为依赖项列在目标名称后面,并用冒号分隔。

并且,指定 gcc 输出文件的选项是 -o而不是-0 .

所以你的all目标变为:

all: $(ofile)
gcc -o $(efile) $(ofile)

运行时出错make clean发生这种情况是因为它尝试删除的文件不存在,因为尚未完成成功的构建。为 rm 添加“强制”选项导致它“忽略不存在的文件和参数,从不提示”,这样即使文件丢失并且make,命令也会成功。不提示。这样就变成了:

clean:
rm -f $(ofile) $(efile)

请注意,通常使用 makefile 构建的各个程序和库都有自己的目标,而“all”通常只依赖于它们中的每一个,以便构建所有它们...因此使用“all”目标作为你有点不寻常。

关于c - 使: *** [clean] Error 1 and No rule to make target errors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38418120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com