静态库,动态库,共享库分别指什么

静态库(Static Library)、动态库(Dynamic Library)、共享库(Shared Library)都是用于存储和提供可执行代码的文件,但它们在链接和运行时的行为以及使用方式上有一些关键的区别。以下是它们的简要解释:

  1. 静态库(Static Library)

    • 定义:静态库是一组已经被编译和链接成二进制代码的程序模块,这些模块在编译时被合并到最终的可执行文件中。
    • 特点:在编译时将库的代码嵌入到可执行文件中,因此可执行文件独立于库的存在。每次程序编译时,静态库的代码都被复制到生成的可执行文件中。
    • 文件扩展名:通常以 .a(Unix/Linux)或 .lib(Windows)为文件扩展名。
  2. 动态库(Dynamic Library)

    • 定义:动态库是一组已经被编译和链接成二进制代码的程序模块,但它们在运行时被加载到内存中,而不是在编译时被合并到可执行文件中。
    • 特点:可执行文件在运行时需要动态库的支持,动态库可以被多个程序共享,减小可执行文件的大小,但需要确保目标系统上存在相应的动态库。
    • 文件扩展名:通常以 .so(Unix/Linux)或 .dll(Windows)为文件扩展名。
  3. 共享库(Shared Library)

    • 定义:术语“共享库”通常被用来指代动态库,即在运行时被加载到内存中并可以被多个程序共享的库。
    • 特点:与动态库概念上一致,共享库的代码在运行时被映射到内存中,多个程序可以共享相同的库实例,从而节省内存。
    • 文件扩展名:取决于操作系统和库的类型,通常是 .so.dll

总的来说,静态库在编译时被链接到可执行文件中,而动态库在运行时被加载到内存中,可以被多个程序共享。共享库通常是指动态库的概念,表示多个程序可以共享同一个库的实例。

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值