使用gcc,程序员可以对编译过程有更多的控制,编译过程分为3个阶段。
①预处理; ②汇编; ③链接。程序员可以再编译的任何阶段结束后停止整个编译过程以检查编译器在该阶段输出的信息。
深入了解gcc之前,我们先看一个小例子。
#include <stdio.h> int main(int arg, char *args[]) { if (arg < 3) printf("请输入2个参数\n"); else { int a = atoi(args[1]); int b = atoi(args[2]); printf("%d 加 %d 等于 %d\n", a, b, a + b); } return 0; }在命令行键入命令编译和运行这段程序
$gcc -o hello hello.c这行命令告诉gcc对源程序hello.c进行编译和链接,并使用参数-o指定创建名为hello的可执行程序。 整个过程看上去仿佛是一气呵成的,但其实是分几步的:
①预编译源代码; ②编译目标代码; ③链接程序。①预编译:
在命令行键入命令。 $gcc -o hello1.c -E hello.c 这行命令告诉gcc对源程序hello.c进行预编译,预编译结果输出到hello1.c文件中。②编译:
在命令行键入命令。 $gcc -o hello.o -c hello1.c 这行命令告诉gcc对源程序hello.c进行编译,但不链接,编译输出到hello.o文件中。③链接:
在命令行键入命令。 $gcc -o hello hello.o 这行命令告诉gcc对源程序hello.o进行链接,生成可执行程序hello。Q:gcc是如何知道文件类型呢? A“通过文件扩展名判断文件类型
c: C语言源文件 cpp: C++源文件 s: 汇编语言源文件 o: 编译后的目标代码文件 a,so: 编译后的库文件