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

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

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

  • 相关阅读:
    Emacs使用gnus收发邮件时nnfolder相关介绍
    emacs 播放mp3
    你真的会写二分查找吗?
    数独的经典case
    MySQL处理千万级数据查询、分页
    Mysql Replication 机制
    redis位图(bitmap)常用命令的解析
    由浅入深了解线程池之源码初探
    BlockingQueue家族成员一览
    由浅入深了解线程池之初识线程池
  • 原文地址:https://www.cnblogs.com/a719525932/p/11254293.html
Copyright © 2011-2022 走看看