zoukankan      html  css  js  c++  java
  • 动态链接库与静态链接库

    动态链接库

    概念

      动态库(Dynamic Link Library abbr,DLL)技术是 程序设计中经常采用的技术。其目的减少程序的大小,节省空间,提高效 率,具有很高的灵活性。采用动态库技术对于升级软件版本更加容易。与静态库(Static Link Library)不同,动态库里面的函数不是执行程序本身的一部分,而是根据执行需要按需载入,其执行代码可以同时在多个程序中共享。

      在Linux下,动态链接库以.so的后缀存在!在Windows下,动态链接库以.dll的后缀存在!

    优点

      动态链接库不是执行程序本身的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个执行程序间共享,节省了空间,提高了效率,具备很 高的灵活性,得到越来越多程序员和用户的青睐。适用于大规模的软件开发,使开发过程独立、耦合度小,便于不同开发者和开发组织之间进行开发和测试。

    a. 共享:多个应用程序可以使用同一个动态库,启动多个应用程序的时候,只需要将动态库加载到内存一次即可;
    b. 开发模块好:要求设计者对功能划分的比较好。

    缺点

      使用动态链接库的程序必须将动态链接库部署到相应的环境中,若动态库不存在,程序必然会报错!其次,程序的加载速度比静态链接慢。当某个模块更新后,如果新模块与旧的模块不兼容,那么那些需要该模块才能运行的软件,统统撕掉。这在早期Windows中很常见。

      不能解决引用计数等问题。


    静态链接库

    概念

      在Linux下,静态库以.a的后缀名存在,在Windows下,静态库以.lib的后缀名存在!

      库中的代码最后需要连接到你的可执行文件中去,所以静态连接的可执行文件一般比较大一些。

    优点

      代码装载速度快,执行速度略比动态链接库快;只需保证在开发者的计算机中有正确的 .LIB/.a 文件,再以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。

    缺点

      使用静态链接生成的可执行文件体积较大,包含相同的公共代码,造成浪费;但是如果多个应用程序使用的话,会被装载多次,浪费内存。


    两者的不同

    二者的不同点在于代码被载入的时刻不同。

    静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。
    动态共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。

  • 相关阅读:
    dedecms likearticle 调用附加表的字段调用方式
    织梦dedecms自定义字段在首页列表页文章页的调用
    织梦系统站点首页、列表、文章页等页面点击数调用方法
    dedecms友情链接flink的调用方法
    织梦dedecms5.7后台进去就卡死解决方法
    Dede修改文章默认标题长度,让标题全显示
    dede调用时间大全标签,不同格式!
    dede调用指定栏目的标签
    python time模块的使用
    phpstudy 环境使用Composer安装thinkphp并指定版本
  • 原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/4346815.html
Copyright © 2011-2022 走看看