编译和链接

编译和链接

  1. 预处理
  2. 编译
  3. 汇编
  4. 链接
编译和链接_第1张图片
编译过程.png

预处理(prepress)

处理#开头的预编译指令。

  • #include:包含的文件插入此预编译指令位置,递归过程
  • #define:删除,展开宏定义
  • 条件预编译指令:执行#if #ifdef
  • 删除所有注释
  • 添加行号和文件名标识:产生警告和错误时能正确显示文件与行号
  • 保留所有#pragma编译器指令

编译(compilation)

  • 对预处理完的文件,进行词法,语法,语义分析,优化,生成相应的汇编代码文件
  • 现在的编译器合并了预处理与编译步骤(c语言使用ccl,objc使用cclobjc)
  • 由此可见,编译器是根据不同的编译参数,调用对应的编程程序,预处理编译程序(ccl)汇编器:(as)连接器:(ld)
  • 输出汇编语言文件

汇编(assembly)

  • 汇编只是简单地翻译过程,把汇编语言按照指令对照表意义翻译。
  • 汇编直接输出目标文件(Object File)

链接(linking)

  • 将目标文件 链接成可执行文件

你可能感兴趣的:(编译和链接)