动态链接 & 静态链接(区别及优缺点)

  1. 静态链接与动态链接的区别
    在C语言中,我们知道要生成可执行文件,要经历预编译、编译、汇编、链接,在链接过程中,静态链接和动态链接就出现了区别。静态链接的过程就已经把要链接的内容已经链接到了生成的可执行文件中,就算你在去把静态库删除也不会影响可执行程序的执行;而动态链接这个过程却没有把内容链接进去,而是在执行的过程中,再去找要链接的内容,生成的可执行文件中并没有要链接的内容,所以当你删除动态库时,可执行程序就不能运行。动态链接生成的可执行文件要比静态链接生成的文件要小一些。

  2. 动态库与静态库的区别
    就不设置环境变量的情况下来说
    动态库一般都会存在/usr/lib/ 目录下;而静态库可以在任何目录下,只要你第一次链接的时候,用绝对路径去链接就行了,之后再删除,是不会影响你的生成的执行文件的。如若可以设置环境变量的话,动态库和静态库可以放置到你想放的任何地方,只是动态库需要设置环境变量,而静态库链接的时候需要绝对路径,但一般来说,动态库都会放在放在/usr/lib,应该大家都习惯了,这样也方便寻找,而当链接动态库的时候默认的路径就是/usr/lib。

各自的优缺点:
1、静态链接库执行速度比动态链接库快。(执行过程不需要找链接的内容)
2、动态链接库更节省内存。(未写入要链接的内容)

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
动态库静态库是两种常见的库文件形式,它们在使用和部署方面有一些区别优缺点。 1. 区别: - 静态库(Static Library)是将代码编译链接成可执行文件时,将所有需要使用的代码合并到可执行文件中。它会增加可执行文件的大小,但在运行时不需要依赖外部库文件。 - 动态库(Dynamic Library)是在程序运行时被加载到内存中的库文件,可被多个程序共享使用。它不会增加可执行文件的大小,但需要依赖外部的库文件以供加载和链接。 2. 优点: - 静态库的优点: - 简单易用:静态库可以直接嵌入到可执行文件中,方便部署和分发。 - 性能高:由于静态库在编译时已经被链接到可执行文件中,不需要额外的加载和链接操作,因此执行速度较。 - 动态库的优点: - 共享性:多个程序可以共享同一个动态库,节省内存空间。 - 更新方便:当动态库更新时,无需重新编译可执行文件,只需替换动态库文件即可。 - 节约存储空间:由于动态库是在运行时加载的,多个程序可以共享同一个动态库文件,节约存储空间。 3. 缺点: - 静态库的缺点: - 可执行文件较大:静态库会将所有代码合并到可执行文件中,导致可执行文件体积增大。 - 更新不方便:当静态库更新时,需要重新编译和链接可执行文件。 - 动态库的缺点: - 需要外部依赖:动态库在运行时需要外部库文件的支持,如果缺少对应的库文件或版本不兼容,会导致程序无法正常运行。 - 加载和链接时间:由于动态库在运行时需要加载和链接,相对于静态库会增加一定的启动时间。 综上所述,选择使用静态库还是动态库取决于项目需求和实际情况。如果在性能和独立性方面有较高要求,可以选择静态库;如果希望节省存储空间、方便更新和共享使用,可以选择动态库

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值