zoukankan      html  css  js  c++  java
  • 静态链接与动态链接的理解

      程序的编译链接可分为四个步骤,分别为预处理,编译,汇编,链接。
        预处理:主要是处理源代码中‘#’开始的预编译指令,生成*.i文件
        编译:将预处理完的文件进行词法、语法、语义等分析,从而产生相应的汇编代码*.s文件。
        汇编:将汇编代码文件翻译成机器可以执行的目标文件。
        链接:将汇编生成的目标文件集合相连接,生成最终可执行文件。
       
        静态链接:在形成可执行文件前实现。如果静态库里某些方法没有任何地方调用,则这些没有被调用的方法或变量将会被丢弃,不会被静态链接    。
        动态链接:在程序运行时进行。动态链接在程序运行时才会将它们连接在一起形成一个完整的程序。
        两者不同之处:
            链接时间不同:前者在执行前,后者在执行时。
        优缺点互补:
        静态链接很浪费空间,更新比较困难,库函数修改时,需要重新进行编译链接形成可执行文件。因为空间的浪费在运行速度比较快。
        动态链接:多个程序执行时共享一个副本,节省空间,更新时比较方便,只需要只需要替换掉原本的目标文件,链接推迟到程序运行时,每个执行程序都需要链接,性能会有一定的损失。

     windows下vs编译产生的其他文件:

  • 相关阅读:
    Java IO/NIO
    LeetCode—— 两两交换链表中的节点
    LeetCode——合并K个排序链表
    LeetCode第201场周赛
    LeetCode第202场周赛
    LeetCode215. 数组中的第K个最大元素
    LeetCode213. 打家劫舍 II
    LeetCode212. 单词搜索 II
    LeetCode211. 添加与搜索单词
    LeetCode210. 课程表 II
  • 原文地址:https://www.cnblogs.com/a719525932/p/11254293.html
Copyright © 2011-2022 走看看