编译

概念

编译的概念很容易混淆,在《编译原理》教材中,编译指的是词法分析到产生目标代码的过程,而在现代编译器中,这个过程被拓展了。现代编译器的主要工作流程包括:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 汇编程序 (assembler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables),

过程

预处理

预处理程序名为cpp,它的主要工作:
处理include
展开宏定义
处理条件编译命令
输出.i文件

编译

编译器程序名为ccl,它的主要工作为:
生成汇编代码
输出.S文件

汇编

汇编器程序名为as,它的主要工作为:
生成二进制代码
输出.o文件

连接

连接器程序名为ld,它的主要工作为:
生成可执行文件

ELF与BIN

ELF  ELF = Executable and Linkable Format,可执行连接格式,是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface,ABI)而开发和发布的。… Read the rest