跳转至

GNU 编译器套件

1. 什么是GCC

GCC(GNU Compiler Collection)即 GNU 编译器套件,属于一种编程语言编译器;现如今 GCC 已经拓展为可以编译 C、C++、Java、Objective-C 等多种编程语言的编译器集合。

2. 什么是 gcc、g++

  • gcc(GUN C Compiler)是 GCC 中的 c 编译器,而 g++(GUN C++ Gompiler)是 GCC 中的 c++ 编译器。

  • gcc 和 g++ 两者都可以编译 c 和 cpp 文件,但存在差异。

3. GCC常用指令

gcc 在 windows 上编译 *.c 文件并非直接生成 *.exe(Linux上为*.out),中间还经历了预处理、编译和汇编几个过程,gcc 提供了生成中间文件的指令。

Windows 编译 c 文件流程图

3.1 生成可执行文件

gcc FileName.c

进入 *.c 文件所在的文件夹中,使用 gcc + 需要编译的文件名,即可在当前目录下生成可执行文件 *.exe

该命令执行时可以通过指定需要编译的文件的地址来进行编译。

3.2 指定生成文件名

gcc FileName.c -o Demo.exe

在上述生成可执行文件的基础上,加上 -o 指令修饰,即可为输出文件指定文件名。

-o 指令后也可以通过给出目标文件需要输出的路径,从而将编译后的 .exe 文件输出至指定目录中。

3.3 预处理

gcc -E FileName.c -o Demo.i

执行预处理操作也就是生成 .i 文件,即编译器对 # 开头的指令进行解析,并且去掉所有注释等。

在执行该指令时,如果不给出输出文件名时,输出结果将会直接打印至Dos框中,不会产生文件。

在预处理阶段,并不会检查语法错误。

3.4 编译

gcc -S Demo.i -o Demo.s

编译操作将 *.i 文件中的源代码转化为汇编代码 *.s 文件,并且如果执行该指令未给出输出文件名,则其会与预处理同样结果,直接输出至 Dos 框中,不会产生文件。

在该阶段会检查语法错误,如果有错误会输出报错。

3.5 汇编

gcc -c Demo.s -o Demo.o

该命令会将 *.s 中的汇编代码转换为机器能执行的二进制机器码。

3.6 链接

gcc Demo.o -o Demo.exe

编译生成的机器码,经过链接程序所需的运行库操作即可正常被计算机执行。