<option id="omqmm"><u id="omqmm"></u></option>
  • <table id="omqmm"></table>
    <noscript id="omqmm"><kbd id="omqmm"></kbd></noscript>
  • <td id="omqmm"><kbd id="omqmm"></kbd></td>
  • 帮助有志向的年轻人通过努力学习获得体面的工作和生活

    全国免费咨询电话 : 400-609-2893

    静态库和动态库有什么区别?老男孩Linux运维培训

    老男孩IT教育

    行业新闻

    2021年8月4日 17:27

    在Linux中,我们编写代码的时候经常用到已有的接口,它们是通过库的形式来提供给我们使用的,常见形式有两种,一种是以.a为后缀,这也就是静态库;另一种则以.so为后缀,这也就是动态库,那么同为库,这两者的区别在哪呢?我们又该如何使用如何选择呢?请看下文:

           在Linux中,我们编写代码的时候经常用到已有的接口,它们是通过库的形式来提供给我们使用的,常见形式有两种,一种是以.a为后缀,这也就是静态库;另一种则以.so为后缀,这也就是动态库,那么同为库,这两者的区别在哪呢?我们又该如何使用如何选择呢?请看下文:

    Linux运维

           首先我们需要了解下什么是目标文件,目标文件常按特定格式来组织,在Linux下,是ELF格式,即可执行可链接格式,在Windows操作系统下,则是PE格式,即可移植可执行。

           通常目标文件有三种形式:

           1、可执行目标文件:也就是我们通常所说的,可以直接运行的二进制文件。

           2、可重定位目标文件:包含了二进制的代码和数据,可以与其他可重定位目标文件合并,并创建一个可执行目标文件。

           3、共享目标文件:是一种在加载或运行时进行链接的特殊可重定位目标文件。

           静态库是什么?可冲定位目标文件以一种特定的方式打包成一个单独的文件,并且在链接生成可执行文件时,从这个单独的文件中拷贝自己需要的内容到最终的可执行文件中,这个单独的文件,被称为静态库,Linux中通常以.a(archive)为后缀。

           动态库是什么?动态库可静态库类似,但是它并不在链接时将需要的二进制代码都拷贝到可执行文件中,而是仅仅拷贝一些重定位和符号表信息,这些信息可以在程序运行时完成真正的链接过程,Linux中通常以.so(shared object)作为后缀。

           有什么区别呢?

           1、可执行文件大小不一样:静态链接的可执行文件比动态链接的可执行文件要大得多,因为它将需要用到的代码从二进制文件中拷贝了一份,而动态库仅仅是复制了一些重定位和符号表信息。

           2、占用磁盘大小不一样:如果有多个可执行文件,那静态库中的同一个函数的代码就会被复制多份,而动态库只有一份,因此使用静态库占用的磁盘空间相比动态库要大。

           3、扩展性与兼容性不一样:如果静态库中某个函数的实现变了,那么可执行文件必须重新编译,而对于动态链接生成的可执行文件,只需要更新动态库本身即可,不需要重新编译可执行文件。

           关于“静态库和动态库有什么区别”介绍到这里就结束了,作为IT教育人才服务平台,老男孩教育一直专注于Linux运维人才的输出服务,有效引导了学员的前进方向,让他们少走弯路,帮助更多人了解Linux技术。想深入的学习Linux云计算运维的知识,可以关注下老男孩教育。

           推荐阅读:

           shell是什么?如何进行连接的?老男孩Linux学习

          运维工程师必须要知道的Linux知识有哪些?Linux学习

           Linux是什么?有哪些特点?Linux学习

    本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。
    84|995澳门跑狗图6合王中王心水高手论坛香港挂牌正版彩图六合彩资料大全香港马会资料白小姐中特玄机香港挂牌之全篇