linux动态库和静态库

前言

函数库依照是否被编译到程序内部而分为动态库(Dynamic)和静态库(Static),下面介绍下这俩的区别。

1 静态库的特色

1.1 扩展名

这类函数库通常扩展名为 libxxx.a。

1.2 编译操作

这类函数库在编译的时候会直接整合到执行程序当中,所以利用静态函数库编译成的文件会比较大一些。

1.3 独立执行的状态

这类函数库最大的优点就是,编译成功的可执行文件可以独立运行,而不需要再向外部要求读取数据库的内容。

1.4 升级难易度

虽然执行文件可以独立执行,但因为函数库是直接整合到执行文件中,所以若函数库升级时。整个执行文件必须要重新编译才能将新版版的函数库整合到程序当中。也就是说,在升级方面只要函数库升级了,所有使用此函数库的程序都需要重新编译。

2 动态库的特色

2.1 扩展名

这奖函数库通常扩展名为libxxx.so。

2.2 编译操作

动态函数库与静态函数库的编译操作差异挺大的。与静态函数库被整个整合到程序中不同的是,动态函数库在编译的时候,在程序里面只有一个【指针(Pointer)】的位置而已。也就是说,动态函数库的内客并没有被整合到执行文件当中,而是当执行文件要使用到函数库的功能时,程序才会去读取函数库来使用。由于执行文件当中仅具有指向动态函数库所在的指针而已,并不包含函数库约内容,所以它的文件会比较小一点。

2.3 独立执行的状态

这类型的函数库所编译出来的程序不能被独立执行,因为当我们使用到函数库的功能时,程序才会去读取函数库,所以函数库文件【必须要存在】才行,而且,函数库的【所在目季也不能改变】团为我们的可执行文件里面仅有【指针】,亦即当要使用该动态函数库时,程序会主动去某个路径下读取,所以动态函数库可不能随意移动或删除,会影响很多依赖的程序软件。

2.4 升级难易度

虽然这类型的执行文件无法独立运行,然而由于是具有指向的功能,所以,当函数库升级后,执行文件根本不需要进行重新编译的操作,因为执行文件会直接指向新的函数库文件(前提是函数库新旧版本的文件名相同)。

3 linux倾向于使用动态函数库

目前的Linux发行版比较倾向于使用动态函数库,因为如同上面提到的最重要的一点,就是函数库的升级方便。由于 Linux系统里面的软件依颈性大复杂了,如果使用太多的静态函数库,那么升级某一个函数库时,就会对整个系统造成很大的冲击。因为其他依赖的执行文件也要同时重新编译,这个时候动态库就有很多用了,因为只要动态函数库升级就好,其他的软件根本无须变动。

4 制作和使用

静态库动态库的制作和使用参考上篇文章。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值