gcc'-c'和gcc'-o'是什么意思?

alr*_*sha 0 linux gcc putty makefile

创建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
Run Code Online (Sandbox Code Playgroud)

但是我不明白为什么我在第一行中使用-o并在第二,第三行中使用-c。它们之间有什么区别?

Wyz*_*a-- 6

这些选项做的事情非常不同:

  • -c告诉GCC将源文件编译为.o目标文件。如果没有该选项,则默认情况下将编译代码并将其链接到一个完整的可执行程序中,该程序仅.c在同时提供所有文件的情况下才有效。要单独编译文件,以便以后可以链接,则需要-c
  • -o设置GCC生成的输出文件的名称。链接目标文件以制成完整程序时,将使用该文件,默认输出文件名是a.out。如果您不希望调用程序,则可以a.out使用-o其他名称。