2017-04-02 195 views
-2

当我创建的makefile,我写gcc'-c'和gcc'-o'的含义是什么?

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 

,但我不知道为什么我在第一线和-c在第二,第三行中使用-o。 他们之间有什么区别?

+2

您是否试过阅读gcc手册? –

+1

您已经创建了该文件。谁知道你为什么这样做? –

+1

为什么你要求**我们解释**你写了什么?你说**我写了**,这意味着它是你的手指在键盘上。你为什么写这个? –

回答

1

这些选项是做完全不同的事情:

  • -c告诉GCC编译源文件转换成.o目标文件。如果没有该选项,它将默认编译并将代码链接到完整的可执行程序,该程序只有在您同时将所有.c文件全部提供时才有效。要单独编译文件以便稍后可以链接,您需要-c
  • -o设置GCC生成的输出文件的名称。链接目标文件以创建完整程序时,您正在使用它,并且默认输出文件名为a.out。如果您不希望程序被称为a.out,则使用-o来指定不同的名称。