C++的lib文件到底是什么 您所在的位置:网站首页 原型文件是什么 C++的lib文件到底是什么

C++的lib文件到底是什么

2023-08-12 18:05| 来源: 网络整理| 查看: 265

一、背景

首先我们得弄清楚,什么是动态链接库与静态链接库

1.1 动态链接库

目标程序通常都不是独立个体,生成程序时都需要链接其他的库,要用到其他库的代码。对于多个程序同时运行而言,内存中就可能有同一个库的多个副本,占用了太多内存而干的活差不多。 为了优化内存运用效率,引入了动态链接库(Dynamic Link Library),或叫共享库(Shared Object)。使用动态链接库时,内存中只需要一份该库文件,其他程序要使用该库文件时,只要链接过来就行了。由于动态库文件外置,链接到动态库的目标程序相对比较小,因为剥离了大量库代码,而只需要一些链接指针。 使用动态库,也意味着程序需要链接到如 *.dll 或 *.so 文件,得提前装好动态库文件,然后目标程序才能正常运行。

1.2 静态链接库

静态库就是将链接库的代码和自己编写的代码都编译链接到一块,链接到静态库的程序通常比较大,但好处是运行时依赖的库文件很少,因为目标程序自己内部集成了很多库代码。

库文件后缀

Linux/Unix 系统里静态库扩展名一般是 .a,动态库扩展名一般是 .so 。Windows 系统里 VC 编译器用的静态库扩展名一般是 .lib,动态库扩展名一般是 .dll 。

二、lib文件到底是什么

所以很多人认为lib为静态库,dll为动态库,这理解并不错,但不全面。lib其实分两种的

第一种, lib是完整的静态库,里面有函数代码本身,在编译时直接将代码加入程序当中,应用程序直接使用 第二种,lib是动态库的导出声明,只包含头部信息。里面只有函数所在的DLL文件和文件中函数位置的入口,代码由运行时加载在进程空间中的DLL提供

我们分别在windows下进行动态编译与静态编译,此时,可以观察出lib比dll小很多:

curllib.dll             190KB;

curllib.lib 14KB;

curllib_static.lib 1857KB;



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有