linux GCC编译程序的过程
使用gcc编译程序时,编译过程可以细分为四个阶段:
- 预处理
预处理过程读入程序源代码,检查包含预处理指令的语句和宏定义,并对源代码进行相应的转换。预处理过程会删除程序中的注释和多余的空白字符。 - 编译
编译阶段中,gcc首先检查代码的规范性,是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。 - 汇编
汇编阶段是把在编译阶段产生的汇编文件转成目标代码。 - 链接
将编译输出的文件链接成最终可执行的二进制文件
如图:
示例:
vi hello.c
#include <stdio.h>
int main(){
printf("hello world");
return 0;
}
$ ls
hello.c
$ gcc -E hello.c -o hello.i #预处理,把预处理的结果输出为hello.i 文件
$ ls
hello.c hello.i
$ gcc -S hello.i #编译,把预处理的结果编译为汇编文件
$ ls
hello.c hello.i hello.s
$ gcc -c hello.s #汇编,把汇编文件转换成目标文件
$ ls
hello.c hello.i hello.o hello.s
$ gcc hello.o -o hello #链接,把目标文件连接成一个名为hello的二进制可执行文件
$ ls
hello hello.c hello.i hello.o hello.s
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。