美文网首页
第二部分-静态链接

第二部分-静态链接

作者: 努力爬行中的蜗牛 | 来源:发表于2017-03-14 23:08 被阅读4次

一、编译和链接

1、构建:IDE一般都将编译和链接的过程一步完成,通常将这种编译和链接合并到一起的过程称为构建;

2、程序从源代码到最终可执行文件一般分为4个步骤:预处理(processing)、编译(compilation)、汇编(assembly)、链接(linking);

1)预编译:编译器将源代码文件和相关头文件编译成一个.i文件;

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

a、将所有的“#define”删除,并且展开所有的宏定义;

b、处理所有条件预编译指令,将被包含的文件插入到该预编译指令的位置;

c、删除所有的“//”和"/* */”;

d、添加行号和文件名标识;

e、保留所有的#progma编译器指令,因为编译器需要使用它们;

2)编译:编译过程就是把预处理完的文件进行一系列的词法分析、语法分析、语义分析及优化后生成相应的汇编代码文件,这个部分是整个程序构建的核心部分;

3)汇编:汇编就是汇编器将汇编代码转变成机器可执行的指令,每一个汇编语句几乎都对应一条机器指令;经过预编译、编译和汇编输入目标文件;

4)链接:输出可执行文件;

编译过程一般分为6步:扫描、语法分析、语义分析、源代码优化、代码生成和目标代码优化;

链接过程主要包括了地址和空间分配、符号决议和重定位;

最基本的静态链接过程:每个模块的源代码文件经过编译器编译成目标文件,目标文件和库(Library)一起链接形成最终可执行文件。而最常见的库就是运行时库(Runtime Librayr),他是支撑程序运行的基本函数的集合,库其实是一组目标文件的包,就是一些最常用的代码编译成目标文件后打包存放;

相关文章

  • 《程序员的自我修养》笔记

    第二章 静态链接 疑问: 问什么静态链接不会把所有代码链接进程序 为什么要静态链接 被隐藏的过程 gcc hell...

  • 第二部分-静态链接

    一、编译和链接 1、构建:IDE一般都将编译和链接的过程一步完成,通常将这种编译和链接合并到一起的过程称为构建; ...

  • 程序员的自我修养: 链接 装载 库

    第2部分 静态链接 第2章 编译和链接 禁止转载

  • 操作系统

    • Linux静态链接和动态链接; (转)静态链接和动态链接1、静态链接静态链接方法:#pragma comme...

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

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

  • 静态链接

    静态链接 静态链接涉及的内容包含如下 空间地址的分配 符号解析和重定位 静态库链接 本文的测试代码以及其他文件存在...

  • 静态链接

    编译和链接 预处理 编译扫描(词法分析)、语法分析、语义分析(静态语义是编译器所能分析的,动态语义要在运行期才能确...

  • 静态链接

    大多数编译系统提供编译器驱动程序( compiler driver ),它代表用户在需要时调用语言预处理器、编译器...

  • 静态链接

    静态链接 当有两个目标文件时,如何将它们连接起来形成一个可执行文件?其中发生了什么? 使用两个源代码文件作为研究例...

  • 动态链接和静态链接

    什么是静态/动态链接 静态链接是指把要调用的函数或过程直接链接到可执行程序中,成为可执行文件的一部分,该文件包含运...

网友评论

      本文标题:第二部分-静态链接

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