1.什么是库
在windows平台和linux平台下都存在着大量的库。
本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。
由于windows和linux的本质不同,因此二者库的二进制是不兼容的。
本文仅限于介绍linux下的库。
2.库的种类及区别
linux库有分类
静态库和共享库(动态库)
区别:
后缀不同
通常共享库以.so(SharedObject的缩写)结尾,静态链接库通常以.a结尾(Archive的缩写)。在终端缺省情况下,共享库通常为绿色,而静态库为黑色。
代码被载入的时刻不同
静态库——编译时加载
动态库——语句调运时加载
静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。
动态库,程序中只保留库文件的名字和函数名,在运行时去查找库文件和函数体并载入内存,程序的体积基本变化不大。
静态库的原则是“以空间换时间”,增加程序体积,减少运行时间;
动态库则是“以时间换空间”,增加运行时间,减少了程序本身的体积。
不同的应用程序如果调用相同的动态库,那么在内存里只需要有一份该动态库的实例。
3.库存在的意义
便于管理。
你调用函数的时候,只是一个#include就搞定,操作系统就自己帮你去找你要用的东西,(前提是你的环境变量要正确,或者你的库在系统默认的地方),而且库函数是成熟稳定的。
缩短开发周期。
你不用去编写所用的代码,你可以用牛人们已经用了千百遍的代码——标准库
这也是团队合作的必要。你有时候只需要了解函数的功能、入口、出口。
有利于升级
如病毒库的升级,具体的我还得查查资料。哈哈见笑。