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 提供了生成中间文件的指令。
3.1 生成可执行文件
进入 *.c
文件所在的文件夹中,使用 gcc + 需要编译的文件名,即可在当前目录下生成可执行文件 *.exe
。
该命令执行时可以通过指定需要编译的文件的地址来进行编译。
3.2 指定生成文件名
在上述生成可执行文件的基础上,加上 -o
指令修饰,即可为输出文件指定文件名。
-o
指令后也可以通过给出目标文件需要输出的路径,从而将编译后的 .exe
文件输出至指定目录中。
3.3 预处理
执行预处理操作也就是生成 .i
文件,即编译器对 # 开头的指令进行解析,并且去掉所有注释等。
在执行该指令时,如果不给出输出文件名时,输出结果将会直接打印至Dos框中,不会产生文件。
在预处理阶段,并不会检查语法错误。
3.4 编译
编译操作将 *.i
文件中的源代码转化为汇编代码 *.s
文件,并且如果执行该指令未给出输出文件名,则其会与预处理同样结果,直接输出至 Dos 框中,不会产生文件。
在该阶段会检查语法错误,如果有错误会输出报错。
3.5 汇编
该命令会将 *.s
中的汇编代码转换为机器能执行的二进制机器码。
3.6 链接
编译生成的机器码,经过链接程序所需的运行库操作即可正常被计算机执行。