Linux 的库文件


1.什么是库

windows平台和linux平台下都存在着大量的库。

本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。

由于windowslinux的本质不同,因此二者库的二进制是不兼容的。

本文仅限于介绍linux下的库。


2.库的种类及区别

  • linux库有分类

静态库和共享库(动态库)

  • 区别:

后缀不同

通常共享库以.so(SharedObject的缩写)结尾,静态链接库通常以.a结尾(Archive的缩写)。在终端缺省情况下,共享库通常为绿色,而静态库为黑色。


代码被载入的时刻不同

静态库——编译时加载

动态库——语句调运时加载


静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。

动态库,程序中只保留库文件的名字和函数名,在运行时去查找库文件和函数体并载入内存,程序的体积基本变化不大。


静态库的原则是“以空间换时间”,增加程序体积,减少运行时间;

动态库则是“以时间换空间”,增加运行时间,减少了程序本身的体积。

不同的应用程序如果调用相同的动态库,那么在内存里只需要有一份该动态库的实例。


3.库存在的意义

  • 便于管理。

你调用函数的时候,只是一个#include就搞定,操作系统就自己帮你去找你要用的东西,(前提是你的环境变量要正确,或者你的库在系统默认的地方),而且库函数是成熟稳定的。


  • 缩短开发周期。

你不用去编写所用的代码,你可以用牛人们已经用了千百遍的代码——标准库

这也是团队合作的必要。你有时候只需要了解函数的功能、入口、出口。


  • 有利于升级

如病毒库的升级,具体的我还得查查资料。哈哈见笑。

相关内容