动态链接库.dll、.so和静态库.a

静态链接库(.a),一个是动态链接库(.so)

静态函数库

这类库的名字一般是libxxx.a

动态函数库

动态链接库(Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL)。Windows 中,DLL 多数情况下是带有 “.dll” 扩展名的文件,但也可能是 ".ocx"或其他扩展名;Linux系统中常常是 “.so” 的文件。
这类库的名字一般是libxxx.so

区别

相同点:链接库本身不是最终的执行程序文件,而是为其他执行文件提供服务的程序。如果把最终的执行程序文件比作一个汽车生产厂家,那么链接库就可以理解为零部件提供商 。

不同点:静态链接库在链接阶段就直接打包到最终的执行程序文件中,而动态链接库则是在程序运行时去链接库里面找需要的东西。

优缺点:显然,静态链接的库文件会导致最终目标程序文件体积膨胀,优点是编译之后就不受原来静态库文件的影响,即使原来的静态库被删除了都没关系;

而动态链接库可以保证文件体积较小,在升级程序时很方便,但缺点是库文件和主程序分开,如果库文件不存在(删除、移动或重命名等)了,则主程序文件找不到而出现运行时错误。

猜你喜欢

转载自blog.csdn.net/weixin_43972437/article/details/123308250