zoukankan      html  css  js  c++  java
  • 静态链接库与动态链接库的差别?

    异同 静态链接库 动态链接库
    区别 两个差别(一)静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,lib中的指令都全部被直接包含在最终生成的exe文件中了。但是若使用dll动态链接库,该dll不必被包含在最终的exe文件中,执行文件执行时可以动态地引用和卸载这个与exe独立的dll文件(二)静态链接库不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。 使用差别静态链接库动态链接库使用的区别在于它允许可执行模块(dll或exe文件)仅包含在运行时定位dll函数的可执行代码的所需信息。静态链接库的使用中,连接器从静态链接库获取所有被引用的函数,并将库同代码一起放到可执行文件中。
    各自特点 1 本身包含了代码,地址符号表等-2 静态链接库是一个或多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive即合并到一起。3当我们应用工程在使用静态链接库的时候,静态链接库要参与编译,在生成执行文件之前的链接过程中,将静态链接库的全部指令直接链接如可执行文件中,故而,在可执行文件生成以后,静态链接库.lib可以弃之不用; 1 实际执行的代码位于动态库中,到入库只包含了地址符号表2动态链接库是作为共享函数库的可执行文件,动态链接库提供了一种方法,是进程可以调用不属于其可执行代码的函数。dll 还有助于共享数据和资源。多个应用程序可同时访问内存中单个dll副本的内容。
    优缺点 使用动态链接库代替静态链接库优点:dll 节省内存,减少交换操作,节省磁盘空间,更易于升级(不需要重链接和重编译),提供售后支持,提供MFC库类的机制,支持多语言支持。
    备注

    [表1:静态链接库与动态链接库差别]

    1. 静态库本身就包含了代码,地址符号表等,而对于导入库而言,其实际的执行代码位于动态库中,导入库只包含了地址符号表等,确保程序找到对应函数的一些基本地址信息;
    2. 静态链接库是一个或多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive即合并到一起。当我们应用工程在使用静态链接库的时候,静态链接库要参与编译,在生成执行文件之前的链接过程中,将静态链接库的全部指令直接链接如可执行文件中,故而,在可执行文件生成以后,静态链接库.lib可以弃之不用;
    3. 动态链接库是作为共享函数库的可执行文件,动态链接库提供了一种方法,是进程可以调用不属于其可执行代码的函数。dll 还有助于共享数据和资源。多个应用程序可同时访问内存中单个dll副本的内容。
    4. 使用动态链接库代替静态链接库优点:dll 节省内存,减少交换操作,节省磁盘空间,更易于升级(不需要重链接和重编译),提供售后支持,提供MFC库类的机制,支持多语言支持。
    5. 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,lib中的指令都全部被直接包含在最终生成的exe文件中了。但是若使用dll动态链接库,该dll不必被包含在最终的exe文件中,执行文件执行时可以动态地引用和卸载这个与exe独立的dll文件。
    6. 另一个区别是,静态链接库不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。
    7. 静态链接库动态链接库使用的区别在于它允许可执行模块(dll或exe文件)仅包含在运行时定位dll函数的可执行代码的所需信息。静态链接库的使用中,连接器从静态链接库获取所有被引用的函数,并将库同代码一起放到可执行文件中。
    CopyRight @Widic 2017 Mail:widicjane@163.com
  • 相关阅读:
    一些你可能用到的代码
    iOS 键盘下去的方法
    iOS设计模式汇总
    随笔
    Spring cloud config 分布式配置中心 (三) 总结
    Spring cloud config 分布式配置中心(二) 客户端
    Spring cloud config 分布式配置中心(一) 服务端
    jdbcUrl is required with driverClassName spring boot 2.0版本
    JpaRepository接口找不到 spring boot 项目
    解决IntelliJ “Initialization failed for 'https://start.spring.io'
  • 原文地址:https://www.cnblogs.com/widic/p/7389914.html
Copyright © 2011-2022 走看看