
正文
linux静态库命令,linux静态库依赖静态库
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
linux下的静态库与动态库的区别和使用
1、静态库是指在应用中,有一些公共代码需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中。
2、动态库优缺点 优点:节省内存部署、升级相对方便,只需要更换动态库,再重新启动服务即可。缺点:加载速度比静态库慢移植性较差,需要把所有用到的动态库进行移植。
3、简单讲,静态库就是直接将需要的代码连接进可执行程序;动态库就是在需要调用其中的函数时,根据函数映射表找到该函数然后调入堆栈执行。
4、静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。
相关问答
Q1: linux下的静态库创建与查看,及如何查看某个可执行依赖于哪些动态库
1、静态库 可以把它想象成是一些代码的集合,在可执行程序运行前就已经加到了代码中,成为了执行程序的一部分,一般是以.a为后缀的文件名,Windows下后缀为.lib。
2、我们继续看看如何在Linux中创建动态库。我们还是从.o文件开始。第5步:由.o文件创建动态库文件;动态库文件名命名规范和静态库文件名命名规范类似,也是在动态库名增加前缀lib,但其文件扩展名为.so。
3、第四步:在程序中使用静态库。gcc -o main main.c -L. -ltest 因为是静态编译,生成的执行文件可以独立于.a文件运行。第五步:执行。
4、查看运行进程的共享库依赖关系 如果你想要找出被一个运行中的进程载入的共享库,你可以使用pldd命令,它会显示出在运行时被载入一个进程里的所有共享对象。sudo pldd 注意你需要root权限去执行pldd命令。
Q2: linux程序提示找不到动态库,改成静态库
libc 和 lib-linux 这两个最基本的库都没有,请问其他电脑上跑的是linux吗?没有这两个库,没有一个程序可以运行。另外,不可能把已有的动态库“直接”转换成静态库,你只能从源码编译出静态库。
在程序更新、部署、发布的时候,使用静态库相对麻烦,如果一个静态库更新了,那它的应用程序都需要重新编译,再发送给用户,有的时候可能只是一个小的改动,但对于用户来说,会导致整个程序重新下载。
原因是rcS 比/etc/profile先运行,rcS是一开机第一个运行的,这时候你的库还没有被连进来。建议把./myXX 放在/etc/profile 的末尾。
Step 由源文件编译生成一堆.o,每个.o里都包含这个编译单元的符号表Step ar命令将很多.o转换成.a,成为静态库动态库的后缀是.so,它由gcc加特定参数编译产生。具体方法参见后文实例。
简单讲,静态库就是直接将需要的代码连接进可执行程序;动态库就是在需要调用其中的函数时,根据函数映射表找到该函数然后调入堆栈执行。
创建并使用静态库 第一步:编辑源文件,test.h test.c main.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。vi test.h test.c main.c 第二步:将test.c编译成目标文件。
关于linux静态库命令和linux静态库依赖静态库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






