您的位置:首页 > 运维架构 > Linux

GCC的浅层理解

2016-07-06 20:35 302 查看

gcc的工作流程

1.预处理

预处理阶段时不做语法检查而是执行以下步骤

a.头文件展开

b.进行宏替换

c.进行条件编译

总的来说就是“#”开头的代码在这一过程中编译

gcc -E test.c > test.i
/*对源文件test.c进行预处理并生成预处理文件test.i */


2.编译

编译时进行下列分析

1.词法分析,主要负责检查关键字、标识符是否准确

2.语法分析,主要负责检查程序中语句的语法是否准确

3.语义分析,主要负责检查程序中语句的逻辑意义是否正确

gcc -c test.o


3.汇编

把汇编程序翻译成CPU可识别的二进制文件,成为目标文件

gcc -S test.c       /*生成test.s文件*/


4.链接

链接的过程实际上为了解决多个文件之间符号引用的问题。因为编译时只对单个文件进行编译,若遇到文件里需要引用到其他文件中的符号,则需要确定其他文件的地址,从而将目标文件和库文件链接在一起形成可执行文件。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息