什么是GCC? GCC编译过程

什么是GCC?  最简单的回答就是Linux 下的C/C++ 编译器。

其实一开始的确是这样的,GCC 原名为GUN C 语言编译器( GNU C Compiler), 原本只能处理编译C语言。

但是后来GCC发展壮大了,可以编译C++, Fortran,Pascal,Objective-C, Java,Ada,Go以及各类处理器构架上的汇编语言,

后来它就改名叫GNU 编译器套件(GNU Compiler Collection), 虽然改了名,但是简称还是GCC,这就是现在的GCC了。

归纳下:GCC 是一个编译器套件,可以编译好多种语言。

 

我这里主要就是学习GCC 编译器种的一种,对C/C++ 代码的编译。

一般Linux 操作系统默认都安装了GCC。打开终端窗口输入: gcc -v  就可查看GCC编译器套件的信息。

先写个Hello World 出来,创建一个hello.c 文件,内容如下

#include

int main(void){

    printf("Hello, GCC!\n");

    return 0;

}

编译命令为: gcc hello.c -o hello   (也可以简写为 gcc hello.c)

编译成功后,就会生成一个可执行的文件hello

终端里面输入命令:./hello   即可以看到执行的结果了("Hello, GCC!")。

 

2: 编译hello.c ,就只用了一条命令,但实际上,看似很简单的这一步操作,却隐藏了he你多操心细节。GCC的编译过程是相当复杂的。

什么是GCC? GCC编译过程_第1张图片

         gcc hello.c -o hello  这一条命令,就干了上面那多事。如果不嫌麻烦,我们也可以一步一步来编译。

1:预处理。  命令:gcc -E hello.c -o hello.i   即可得到 预处理后的文件hello.i (其实还是C代码文件), 有兴趣的可以用 cat hello.i 看看里面内容。

2:编译。命令:gcc -S hello.i    就是把上面的hello.i 文件,编译为汇编语言。懂ASM的人,可以去看。

3:汇编。命令:gcc -c hello.s 。把hello.i 这个汇编文件编译成机器码,将会得到hello.o 文件。

4: 链接。命令:gcc hello.o  尽管3得到了机器码,但是文件却还是不可以运行,必须要经过链接才能运行。

什么是GCC? GCC编译过程_第2张图片

总结下: 预处理就是预处理就是处理引入的头文件,定义的宏等。 “编译”就是把C/C++代码编译成汇编语言。“汇编”就是把汇编代码编译成机器码。最后“链接”生成可以执行的机器码。

 

你可能感兴趣的:(C语言学习)