我有一个最后提供的makefile,以及一些关于它的问题:
clean:
部分做了什么?-c
部分是什么意思? (谷歌搜索gcc -c explained
和其他变体给了我一个大学的首字母缩略词GCC。)当我尝试运行make时,我收到此错误,但文件lab3p2.c
肯定存在。怎么了?
gcc –c lab3p2.c
gcc: –c: No such file or directory
make: *** [lab3p2.o] Error 1
all: lab3p2
lab3p2: lab3p2.o lab3p2f1.o lab3p2f2.o lab3p2f3.o
gcc lab3p2.o lab3p2f1.o lab3p2f2.o lab3p2f3.o –o lab3p2
lab3p2.o: lab3p2.c
gcc –c lab3p2.c
lab3p2f1.o: lab3p2f1.c
gcc –c lab3p2f1.c
lab3p2f2.o: lab3p2f2.c
gcc –c lab3p2f2.c
lab3p2f3.o: lab3p2f3.c
gcc –c lab3p2f3.c
clean:
rm –rf *.o lab3p2
答案 0 :(得分:2)
-c
是否可能实际上是EN DASH字符而不是连字符?
-c
告诉gcc"只需编译"代码并生成目标文件而不是可执行文件。 clean
目标只是清理工作目录。
答案 1 :(得分:2)
“清洁:”部分做了什么?
Makefile的clean
规则通常用于删除Makefile生成的任何编译文件。在这种情况下,将删除已编译的目标文件(.o文件)和lab3p2文件。
由于clean
不是生成的文件,因此应将其设为phony rule:
clean:
rm –rf *.o lab3p2
.PHONY: clean
“-c”部分是什么意思? (谷歌搜索“gcc -c解释”和其他变体给了我一个大学的缩写gcc,等等)
这意味着编译源文件,但不运行链接器。来自man page:
-c Compile or assemble the source files, but do not link. The linking stage simply is not done. The ultimate output is in the form of an object file for each source file.
我收到此错误:
gcc –c lab3p2.c gcc: –c: No such file or directory make: *** [lab3p2.o] Error 1
–
是一个短划线,它应该是hyphen-minus(-
)。