zoukankan      html  css  js  c++  java
  • 链接

    一、关于链接

    1.链接:将各种代码和数据部分收集起来并组合成为一个单一文件的过程。这个文件可被加载或拷贝到存储器并执行。

    2.链接可以执行于编译时,也就是在源代码被翻译成机器代码。也可以执行于加载时,也就是程序被加载器加载到存储器并执行时执行于运行时,有应用程序来执行。

    3.链接是由链接器的程序自动执行的。

    4.链接使分离编译成为可能。
    二、编译器驱动程序

    1.大部分编译系统提供编译驱动程序:代表用户在需要时调用语言预处理器、编译器、汇编器和链接器。

    (1)C预处理器:源程序main.c->ASCII码中间文件main.i
    (2)C编译器:main.i->ASCII码汇编语言文件main.s
    (3)C汇编器:main.s->可重定位目标文件
    2.运行链接器程序ld,将各种.o文件以及必要的系统目标文件组合起来,创建可执行文件
    3.运行可执行文件:./可执行文件名字
    4.外壳调用操作系统中加载器函数,拷贝可执行文件中的代码和数据到存储器,将控制转移到这个程序的开头

    三、静态链接

    1.以一组可重定位目标文件和命令行参数作为输入,生成一个完全链接的可以加载和运行的可执行目标文件作为输出。

    2.输入的可重定位的目标文件由各种不同的代码和数据节组成。

    3.指令在一个节中,初始化的全局变量在另一个节中,而未初始化的变量又在另外一个节中。

    符号解析  

    目标文件定义和引用符号。符号解析的目的是将每个符号引用刚好和一个符号定义联系起来。

    重定位  

    编译器和汇编器生成从地址0开始的饿代码和数据节。链接器通过把每个符号定义与一个存储器位置联系起来,然后修改所有对这些符号的引用,使得它们指向这个存储器位置,从而重定位这些节

  • 相关阅读:
    yzoj P2344 斯卡布罗集市 题解
    yzoj P2350 逃离洞穴 题解
    yzoj P2349 取数 题解
    JXOI 2017 颜色 题解
    NOIP 2009 最优贸易 题解
    CH 4302 Interval GCD 题解
    CH4301 Can you answer on these queries III 题解
    Luogu2533[AHOI2012]信号塔
    Luogu3320[SDOI2015]寻宝游戏
    Luogu3187[HNOI2007]最小矩形覆盖
  • 原文地址:https://www.cnblogs.com/lolau/p/10093714.html
Copyright © 2011-2022 走看看