美文网首页
链接之可执行文件过程

链接之可执行文件过程

作者: 我就是我啊 | 来源:发表于2018-12-09 22:05 被阅读0次

一个典型程序的转换处理过程:

1.预处理

    处理源文件以“#”开头的预编译指令,包括:

    ——处理“#define”并展开所定义的宏

    ——处理所有条件预编译指令,如“#if”等

    ——插入头文件到“#include”处,以递归方式进行处理

    ——添加行号和文件名标识,以便编译时编译器产生调试用的行号信息

    ——保留所有的#pargma编译指令(编译器要用)

2.编译:

    编译过程就是将预处理后得到的预处理文件进行语法分析、词法分析、语义分析、优化后,生成汇编代码文件。经过编译后,得到的汇编代码文件还是可读的文本文件,cpu无法理解和执行它

3.汇编

    汇编程序用来将汇编语言源程序转换为机器指令序列(机器语音程序)。

    汇编指令和机器指令一一对应,前者是后者的符号表示,他们都属于机器级指令,所构成的程序都称为机器级代码

    汇编结果是一个可重定位目标文件,其中包括的是不可读的二进制代码,必须用相应的工具软件来查看其内容

4.链接

    链接过程是将多个可重定位目标文件合并以生成可执行目标文件

相关文章

  • 链接之可执行文件过程

    一个典型程序的转换处理过程: 1.预处理 处理源文件以“#”开头的预编译指令,包括: ——处理“#define”并...

  • 操作系统-静态链接与动态链接

    静态链接与动态链接的区别:静态链接:把要调用的函数或者过程直接链接到可执行文件中,成为可执行文件的一部分,换句话说...

  • C语言程序内存布局

    C语言笔记之02-C语言程序内存布局 我们知道C语言的编译过程分为:预处理-编译-汇编-链接-生成可执行文件,而这...

  • [读书笔记]程序员的自我修养--静态链接

    1、编译过程 预处理(预编译 .i)—> 编译(.s) —> 汇编(.o) —> 链接(可执行文件 .a ...

  • 程序员的自我修养

    程序员的自我修养:编译、链接、装载 问题 编译/链接的过程做了什么 目标/可执行文件的内容是什么 装载的过程做了什...

  • (三) Mach-O 文件的静态链接

    # 链接概述 链接通常是一个让人比较费解的过程,为什么汇编器不直接输出可执行文件而是输出一个目标文件呢?链接过程到...

  • 库命令

    ldd <可执行文件名>查看可执行文件链接了哪些系统动态链接库 nm <可执行文件名>查看可执行文件里面有哪些符号...

  • 静态链接(二)

    PC平台流行的可执行文件格式: (可执行文件、动态链接库(dll)、静态链接库(lib)都是以可执行文件的格式存储...

  • 编译与链接

    在开发过程中,我们很少会去关注编译和链接过程,Xcode会自动处理将编译和链接合并到一起来生成一个可执行文件,下面...

  • mac下添加可执行文件

    思路 终端执行命令使之可执行,可以通过软链接将可执行文件链接到系统命令执行目录下/usr/local/bin/ l...

网友评论

      本文标题:链接之可执行文件过程

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