问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Linux下的静态库和动态库

发布网友 发布时间:2022-04-19 13:22

我来回答

2个回答

热心网友 时间:2023-09-18 23:12

静态库

可以把它想象成是一些代码的集合,在可执行程序运行前就已经加到了代码中,成为了执行程序的一部分,一般是以.a为后缀的文件名,Windows下后缀为.lib。静态库的命名也分为三部分,1、前缀:lib,2、库的名称:随意,如lisi,3、后缀:.a。

静态库优缺点

上面简单介绍了静态库,那它自然也会有优缺点,这里来介绍下它的优缺点。

优点:1、在最后,函数库是被打包到应用程序中的,实现函数本地化、寻址方便、高效。2、程序在运行的时候,与函数库没有关系,移植性更强。

缺点:1、消耗资源较大,每个进程在使用静态库的时候,都要复制一份才可以,这也就造成了内存的消耗。2、在程序更新、部署、发布的时候,使用静态库相对麻烦,如果一个静态库更新了,那它的应用程序都需要重新编译,再发送给用户,有的时候可能只是一个小的改动,但对于用户来说,会导致整个程序重新下载。

动态库

在程序编译时不会被连接到目标代码中,在后期运行时才会载入,不同的应用程序如果调用相同的库,内存中只有一份共享库的拷贝,也就避免了空间的浪费问题。一般以.so作为文件后缀名,也分为三部分:1、前缀:lib,2、库名称:自定义,3、后缀:.so

动态库优缺点

优点:1、节省内存2、部署、升级相对方便,只需要更换动态库,再重新启动服务即可。

缺点:1、加载速度比静态库慢2、移植性较差,需要把所有用到的动态库进行移植。

热心网友 时间:2023-09-18 23:13

linux下的静态库和动态库1.制作自己的动态库和静态库linux下动态库以.so结尾,静态库以.a结尾,它们都以lib开头,比如一个库名为net,那么它的全名应该是libnet.so或者libnet.a。我们有两个文件,hello.c和test.c,下面是两个文件的内容//hello.c
www.shiwu.com
#include
<stdio.h>void
my_lib_func(){printf(Library
routine
called/r/n);}//test.c#include
<stdio.h>
www.shiwu.com
int
main(){my_lib_func();return
1;}test.c调用了hello.c的方法,我们把hello.c封装成库文件。无论是静态库还是动态库,都是由.o文件组成,我们先把gcc
-c
hello.c生成.o文件制作静态库ar
crv
libmyhello.a
hello.o,ar是生成静态库的命令,libmyhello.a是我的静态库名。下一步就是在我的程序中使用静态库
可以看到已经有了Library
routine
called的结果,说明调用成功了。下面我们删除libmyhello.a,看看程序是否还是运行正常
我们发现程序依然运行正常,说明静态库已经连接进入我们的程序中制作动态库
www.shiwu.com
我们看见动态库libmyhello.so已经生成,下面继续使用
找不到库文件,这个时候我们把so文件拷贝到/usr/lib下面
运行成功2.动态库和静态库同时存在的调用规则我们可以发现,不论是动态库还是静态库,程序编译连接的时候都是加的参数-l,那么当他们同时存在的时候,程序会选择动态库还是静态库呢。我们做个尝试。
我们同时存在libmyhello.a和libmyhello.so,我们发现运行的时候,出现找不到动态库的错误,由此,我们可以得出结论,同时存在动态库和静态库的时候,gcc会优先选择动态库作者
梨树阳光
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? LINUX下的静态路由 linux怎么静态编译 linux静态库和共享库的区别 linux静态库怎么编译 Linux里面什么是静默安装? Linux怎么添加静态路由? Linux里面什么是静态变量? Linux里面什么是静默状态? linux系统中有哪些静 九阳豆浆机打豆浆需要多长时间 用九阳豆浆机做豆浆时,水和豆子的比例应该是多少? 榨豆浆一次要用装多少水呢 九阳豆浆机打豆浆要多长时间 豆浆机做豆浆用多长时间啊 豆浆机打豆浆多久打好 九阳豆浆机打一次豆浆一般要多长时间? 用豆浆机打一个人的豆浆要多少黄豆和水 打豆浆比例是多少 一般的豆浆机打豆浆多长时间啊? 九阳豆浆机打豆浆需要多长时间? linux动态库和静态库的区别 linux终端静默打开软件 Linux中如何创建静态库和动态库 周庄古镇有什么值得推荐游览的地方和美食呢? 周庄古镇美食有哪些?景区内哪些东西值得吃? 周庄古镇的景点比较分散,有哪些值得游览的呢? 想去周庄旅游,大家有什么好的攻略推荐吗? 江苏昆山市的周庄古镇有什么岭南特色美景? 卡帝车控+官网 江南水乡最有名的为什么是周庄古镇? 卡帝车控+官网卡帝车控ID和密码怎么输入? 周庄古镇晚上几点免费开放 卡帝车控gsm离线 苏州十大古镇分别是哪里? 卡帝手机智能控车 手机控车 限制距离吗 卡帝车控绑定的手机不用了怎么充值? 昆山周庄古镇怎么样呀?好玩吗?门票是多少呀? 卡帝车控怎么换手机号码 上海周庄古镇门票价格? 404 Not Found