linux-静态库和动态库

来源:互联网 发布:python发送http请求 编辑:程序博客网 时间:2024/05/29 19:07

1. 生成方式

静态库:
首先将源文件编译成目标文件:gcc –c test.c -o test.o
然后生成静态库:ar –rc libstatic.a test.o

共享库:
首先将源文件编译成目标文件gcc –c test.c -o test.o
生成共享库:gcc –fPIC –shared –o libshared.so test.o


静态库的链接方法:
gcc –o software_name -L. –lstatic main.c (默认库在当前文件夹)

共享库的链接方法: 
gcc –o software_name -L. –lshared main.c(默认库在当前文件夹)


2. 存在周期

静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。

动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。


3.加载时间

二者的不同点在于代码被载入的时刻不同。

静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。

共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。


4.如何使用

静态库直接编译到程序里面;

动态库可以通过设置环境变量来告知其地址使用:

export LD_LIBRARY_PATH='/home/lib'


注意:若静态库和动态库同名, gcc命令将优先使用动态库。






0 0
原创粉丝点击