编译器编译过程简介

完整的编译器编译过程分为四步:预处理、编译、汇编、链接。下面简单介绍一下各个过程。

1、预处理(The Preprocessor)

        预处理器产生编译器的输入。通过预处理,将存储在不同文件中的程序模块集成为一个完整的源程序代码,并将宏展开为原始语句加入到头文件中。简单概括就是:文件合并、宏定义替换、删除注释等。

2、编译(The Compiler)

        编译器将独立于目标的高级语言源代码转换为特定于目标的汇编代码。由于汇编程序代码是特定于目标硬件的,所以编译器也特定于目标硬件。

        编译阶段首先对源代码的语法进行检查,然后对代码进行优化,最终生成机器目标代码——汇编代码。此时生成的文件为.S文件。

3、汇编(The Assembler)

        通过编译器产生的汇编代码需要交由汇编器进行进一步的处理,生成可重定位的机器代码,体现在文件上为将.s文件转换为.o文件。此时生成的.o文件为二进制文件。

4、链接(The Linker)

        经过汇编后的.o文件仍然是不可执行的,还需要经过链接阶段,将程序所引用的外部文件(库函数、链接脚本等)关联起来,生成可执行文件。

   链接的方式有静态链接和动态链接,动态链接的代码是存放在动态链接库或者某个共享对象的目标文件中,不会将库的内容copy到可执行程序中,所以生成的程序体积较小;而静态链接库则将需要的代码从相应的静态链接库中copy到可执行程序中。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值