美文网首页Other
[OS] 从源代码到可执行文件

[OS] 从源代码到可执行文件

作者: 何幻 | 来源:发表于2016-03-09 17:26 被阅读94次

1. 预编译:

预编译过程主要处理那些源代码文件中的以“#”开始的预编译指令。
比如“#include”“#define”等。

主要处理规则如下:
(1)展开所有的宏
(2)处理所有的条件编译指令
(3)处理预编译指令,将被包含的文件递归插入到该预编译指令的位置
(4)删除所有的注释
(5)添加行号和文件名标识,以便编译器产生错误信息
(6)保留所有的“#pragma”编译器指令

$ gcc -E hello.c -o hello.i

<u></u>-E表示只进行预编译

2. 编译:

编译就是把预处理完的文件,进行一系列词法分析,语法分析,语义分析及优化后生成相应的汇编代码文件。

$ gcc -S hello.i -o hello.s

3. 汇编:

汇编器是将汇编代码转变成机器可以执行的指令,每一个汇编语句几乎都对应一条机器指令。

$ gcc -c hello.s -o hello.o

4. 链接:

一个复杂的软件,每个源代码模块独立编译,然后按需将它们组装起来,这个组装模块的过程就是链接。

链接过程主要包括:
(1)地址和空间分配(Address and Storage Allocation)
(2)符号决议(Symbol Resolution)
(3)重定位(Relocation)

每个模块的源代码文件(.c文件)经过编译器编译成目标文件(.o文件),目标文件和库一起链接形成最终可执行文件。

相关文章

  • [OS] 从源代码到可执行文件

    1. 预编译: 预编译过程主要处理那些源代码文件中的以“#”开始的预编译指令。比如“#include”“#defi...

  • 《程序是怎样跑起来的》(下)

    学习笔记 第8章 从源文件到可执行文件 本章问题: 本章重点: 编译器的功能;程序从源代码到可执行文件的流程;程序...

  • Mach-O 可执行文件

    这篇文章主要了介绍以下两点: 从源代码到可执行文件,编译器都做了什么? Mach-O 可执行文件里面是什么? 注:...

  • iOS Runtime详解

    一、什么是Runtime? 我们都知道,从源代码到可执行文件需要经历三个阶段:编译、链接、运行。Objective...

  • GeekBand iOS开发高级进阶学习笔记(第一周)

    工程管理 从源码到APP源代码文件(.m或.h)通过编译生成目标文件(.o),再通过连接生成可执行文件(mach-...

  • Other Linker Flags

    链接器 从C代码到可执行文件经历的步骤是: 源代码 > 预处理器 > 编译器 > 汇编器 > 机器码 > 链接器 ...

  • iOS-framework的补充

    编译过程: 从C代码到可执行文件经历的步骤是:源代码 > 预处理器 > 编译器 > 汇编器 > 机器码 > 链接器...

  • 条件编译 Conditional Compilation

    通常,Objective-C 程序的编译从源代码到可执行文件分为三个阶段。第一阶段,预处理程序(preproces...

  • 词法分析(理论篇)

    写在前面 从源代码到可执行文件要经历几个过程: 词法分析 语法分析 语义分析 中间代码生成 代码优化 词法分析有点...

  • C 语言编译链接过程

    C 语言从源代码变成可执行文件经过了以下步骤: 预处理(preprocessing)、编译(compilation...

网友评论

    本文标题:[OS] 从源代码到可执行文件

    本文链接:https://www.haomeiwen.com/subject/tcftlttx.html