Linux下的静态库和动态库的简单总结

库是一个包含的代码可以被程序调用的二进制文件。

静态库和动态库的区别

静态库:

1、编译时把静态库中相关代码复制到可执行文件中
2、程序运行时无需加载库,运行速度快(有点)
3、占用更多的磁盘和内存空间,静态库升级后,程序就需要重新编译,库升级不方便

动态库:

1、编译时仅记录使用哪个共享库(动态库)中的哪个符号(函数),不复制共享库的相关代码,运行时加载共享库
2、程序不包含库中的代码,代码尺寸小
3、库升级方便,无需重新编译
4、使用广泛

创建静态库

第一步:

编写源代码

第二步:

将源代码生成相对应的.o文件
在这里插入图片描述

第三步:

静态库的命名规范lib库名.a
在这里插入图片描述

ar:库文件维护程序的名称
c:创建一个库,不管库是否存在,都将创建
r:在库中插入模板
s:创建目标文件索引,在创建较大库的时候能加快时间

第四步:

链接静态库
在这里插入图片描述
注意:-L. 当前路径

第五步:

运行即可

创建动态库

第一步:

编写源代码

第二步:

将源代码生成相应的.o文件
在这里插入图片描述
-fPIC:生成与位置无关的代码,可以在任何位置运行

第三步:

创建共享库,共享库的命名规范:lib库名.so.版本号:数字

第四步:

-shared:指定生成动态链接库
在这里插入图片描述

第五步:

给共享库创建软链接,创建软链接的目的是能够然我们的编译器在编译的时候找到共享库
在这里插入图片描述

第六步:

编译
在这里插入图片描述

第七步:

运行,注意将共享库拷贝到系统库路径下
在这里插入图片描述
关于Linux下动态库和静态库我的一些小小的建议就到此结束,我会不断完善的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux下,静态库动态库是两种不同的库文件形式。 静态库是将整个库编译进可执行程序中的库文件。这意味着使用静态库的可执行程序会比较大,但执行速度更快。静态库的资源都在可执行程序的内部,因此可以提供更快的执行速度。如果对空间不是特别敏感,而需要快速执行的情况下,可以选择静态库动态库是以libxxx.so命名的库文件。与静态库不同,如果程序使用动态库,库的数据不会在编译时编译进程序,而是在程序运行到与动态库相关的函数时,根据动态库留下的标记,在动态库中寻找资源。动态库的使用可以节省空间,但可能会牺牲一些执行速度。 根据具体的需求,选择使用静态库还是动态库需要进行详细分析。如果库文件较大,而且不需要很快的执行速度,可以选择动态库。对于对速度要求较高的程序,比如开机启动程序等,更推荐使用静态库。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [linux静态库动态库问题](https://download.csdn.net/download/u014132659/9673886)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Linux系统下的静态库动态库](https://blog.csdn.net/weixin_46435653/article/details/120818065)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值