- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个c源文件,prog2.c
和getopts.c
.我的prog2.c
和getopts.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 clean
和make
.对于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/
我是一名优秀的程序员,十分优秀!