C语言的静态库与动态库

11 篇文章 0 订阅

1.什么是库

       库是一种可执行代码的二进制形式,可以直接被操作系统载入内存执行。

        通常我们会将一些常用的函数封装成一个库,提供接口给其它程序文件调用。这样一来,省去了重复写该函数接口。当我们使用该函数时,就可以直接将我们所需要的文件链接到我们的程序中,提高了开发效率。

2.库的分类

    linux下的库分为2种:动态库和静态库。

    主要区别:   

        @静态库

                1).文件命名方式:“libxxx.a”,库名前加“lib”,后缀为".a"。xxx为静态库名。所以查找库名的时候需要注意。

                2).链接时机:静态库的代码是在编译过程中被载入程序中的。这就说明,只要程序编译完成,就不受静态库的影响,比如,把静态库文件移至其它路径等。

                3).链接方式:是将整个函数库的所有数据都加载进了目标。这样的好处是编译后的执行程序不再需要外部的函数库支持。不足之处是:如果静态库更新或者发生改变,则程序必须需要重新编译一次。

        @动态库

                   1).动态库的命名方式:“lib”,后缀变为“.so”。所以为“libxxx.so” ;
                   2).链接时间:动态库在编译的时候并没有被编译进目标代码,而是当你的程序执行到相关函数时才调用该函数库里的相应函数。这样做缺点是因为函数库并没有整合进程序,所以程序的运行环境必须提供相应的库。优点是动态库的改变并不影响你的程序,所以动态函数库升级比较方便。

            它们两个还有很明显的不同点:当同一个程序分别使用静态库,动态库两种方式生成两个可执行文件时,静态链接所生成的文件所占用的内存要远远大于动态链接所生成的文件。(因为静态链接是在编译时将所有的函数都编译进了程序。而动态链接是在运行是才调用库里相应函数)

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值