Linux-动态库与静态库

函数库根据使用分为两类,分别是为静态函数库动态函数库。

静态库特点

  1. 扩展名:为.a,例如,libxyz.a
  2. 编译操作:编译时会直接整合到可执行程序中,所以基于静态库编译成的可执行文件比较大。
  3. 独立执行:基于静态库编译成的可执行文件可以独立执行,不需要再向外部要求读取函数库的内容。
  4. 升级难度大:以为函数库是直接整合到了可执行文件中,升级函数库时,需要重新编译生成可执行文件。也就是说,只要函数库升级了,所有使用此静态函数库的程序都需要重新编译。

动态库的特点

  1. 扩展名:为.so,例如libxyz.so
  2. 编译操作:与静态库被整合到程序中不同的是,动态库在编译的时候,在程序里面只有一个【指针】的位置而已,也就是动态库的内容并没有被整合到可执行程序中,而是当执行文件要使用到函数库的功能时,程序才会去读取函数库来使用。由于执行文件中仅具有动态函数库所在的指针而已,并不包含函数库的内容,所以,执行文件会比较小。
  3. 不可独立执行:基于动态库编译出来的程序不能独立执行,因为当我们用到函数库的功能时,程序才会去读取函数库,所以函数库必须存在才行。而且函数库所在的目录也不能改变,因为我们的可执行文件里面仅有指针,也就是当要使用动态函数库时,程序会主动去某个路径下读取。所以,动态函数库不能随意移动或删除,否则,会影响很多依赖的程序软件。
  4. 容易升级:虽然库本身不能独立执行,然而由于具有指向的功能,所以,当函数库升级后,执行文件根本不需要重新编译的操作,因为执行文件会直接指向新的函数库文件(前提是新旧版本函数库的文件名相同)。

因为,动态库容易升级的优点,所以Linux系统发行版倾向于使用动态库。

这些动态库绝大多数放在/lib64与/lib目录中,此外,Linux系统里面很多函数库其实内核就提供了,放在/lib/modules里面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值