什么是库?

库(library)是函数库的简称。每个库都有至少一个的头文件,和一个库文件。库文件中是目标代码状态的函数,而通过头文件,我们能够知道某个库中有哪些函数,按照怎样的方式才能使用它们。在学了C后,我们会了解的更多,现在要介绍的是:库按使用方式分两种,动态库和静态库。

用过Windows的人应该知道一种叫DLL的文件,那就是Windows上的动态库,DLL是Dynamic link Library(动态链接库)的缩写。而在Linux上,动态库通常是用.so结尾的。
而静态库在Linux上是以.a结尾的。动态库和静态库的区别就是,动态库不是使用它的程序的组成部分,即程序中不包括动态库的代码(见下插图),只包括使用动态库的代码,这样可以有效的减少程序的大小。当然,这样做也是有条件的:程序运行时,必须“动态地”调用动态库中的函数,则该动态库一定要在系统可以找的到的地方。而静态库就不必这么麻烦,使用了静态库,就意味着静态库中的代码也是程序的一部分,程序会变的比较大。但不必依赖动态库是一大优势,可以使用在没有该动态库的系统上。

Windows上发布的软件常常是以静态编译(即编译时包括静态库)的方式发布的,而大型软件则以动态编译加动态库的方式发布(可以有效减少软件的大小)。

原文地址:https://www.cnblogs.com/chisheng1686/p/3670875.html