当我创建makefile时,我写了
test: main.o 1.o
gcc -o test main.o 1.o
main.o: main.c a.h
gcc -c main.c
1.o: 1.c a.h
gcc -c 1.c
但我不知道为什么我在第一行使用-o而在第二行第三行使用-c。 它们之间的区别是什么?
答案 0 :(得分:3)
这些选项做了很多不同的事情:
-c
告诉GCC将源文件编译成.o
目标文件。如果没有该选项,它将默认编译并将代码链接到一个完整的可执行程序中,只有在同时为其提供所有.c
文件时才能运行。要单独编译文件以便以后可以链接,您需要-c
。-o
设置GCC生成的输出文件的名称。您在链接目标文件以创建完整程序时使用它,默认输出文件名为a.out
。如果您不希望调用您的程序a.out
,则可以使用-o
指定其他名称。