Linux下的静态库和动态库

Linux下的静态库和动态库,第1张

静态库

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

静态库优缺点

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

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

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

动态库

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

动态库优缺点

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

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

1,如果同时打开静态库和运行程序调用,调式模式下,可以进入静态库的内部函数进行调试;

2,其实不用把shadow build取消勾选;文件输出的文件就是lib***.a的文件,可以在shadow目录里面很方便找到;

3,新的项目使用的时候,就是让其能找到lib***.a,和该库的h头文件;

4,QT的编译输出的静态库名字会自动在项目名字前加lib三个字,后缀是.a;

5, QT5.15的编程的工程与该例子中缺少“需要什么模块就添加什么”的部分;

在编译命令行中,将使用的静态库文件放在源文件后面就可以了。比如:

gcc -L/usr/lib myprop.c libtest.a libX11.a libpthread.a -o myprop

其中-L/usr/lib指定库文件的查找路径,编译器默认在当前目录下先查找指定的库文件。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8796774.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-21
下一篇2023-04-21

发表评论

登录后才能评论

评论列表(0条)

    保存