Gcc编译过程详解
1、示例程序
vi hello.c并写入程序


2、预处理
gcc -E hello.c -o hello.i
预编主要前面处理带“#”的指令,如#include、#define等,还要删除注释,添加行号和文件名标识

3、编译
gcc -S hello.i -o hello.s
编译过程是把预处理完的文件进行一系列的词法分析、语法分析、语义分析及优化后生产相应的汇编代码文件

4、汇编
gcc -c hello.s -o hello.o
将代码转换成机器可以执行的指令

5、连接
连接是一个复杂的过程,使用ld指令
ld -static crt1.o crti.o crtbeginT.o hello.o -start -group -lgcc -lgcc_eh -lc -end-group crtend.o crtn.o
连接的过程包括按序叠加、相似段合并、符号地址的确定、符号解析与重定位、指令修正、全局构造与解析等等

6、运行程序
./hello 运行程序,可以看到结构

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:49
阅读量:155
阅读量:166
阅读量:155
阅读量:27