Linux 什么';这是gcc的含义'-c';和gcc'-o';?

Linux 什么';这是gcc的含义'-c';和gcc'-o';?,linux,gcc,makefile,putty,Linux,Gcc,Makefile,Putty,当我创建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。 它们之间的区别是什么?这些选项的功能非常不同: -c告诉GCC将源文件编译成.o对象文件。如果没有该选项,它将默认编译代码并将其链接到一个完整的可执行程序中,只有同时为其提供所有.c文

当我创建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。
它们之间的区别是什么?

这些选项的功能非常不同:

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

您是否尝试阅读gcc手册?您已经创建了该文件。谁知道你为什么这么做?为什么要我们解释你写的东西?你说是我写的,意思是你的手指在键盘上。你为什么要写这些?这是你真的应该在GCC文档中查阅的信息,而不是在这里询问的信息。编译器标志的页面是这样的:大概,“我写的”真正的意思是“我遵循了我在web上找到的一个示例,但我不完全理解它”。