gcc '-c' 和 gcc '-o' 是什么意思?
What's the meaning of gcc '-c' and gcc '-o'?
我创建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
指定一个不同的名称。
我创建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
指定一个不同的名称。