静态库和动态库

来源:互联网 发布:java调用其他类的函数 编辑:程序博客网 时间:2024/05/16 11:05

1、静态库是在程序编译的时候被载入到程序的目标代码中,程序运行的时候不在需要改静态库,因此体积比较大。

2、动态库是在程序运行的时候载入的,程序运行的时候还需要动态库,因此所占体积比较小。不同的应用程序可以使用同一个动态库,因此,内存中只需要一份动态库。

静态库的使用方法:例如将hello.c文件封装为静态库libhello.a,并链接到main.c

1gcc -c hello.c -o hello.o

2ar crs libmyhello.a hello.o

3gcc  main.c -L. -lmyhello -o hello

其中,-L.代表在当前目录下查找静态库

lmyhello 代表libmyhello.a  在命令中会在自动的补全

动态库的使用方法:例如:将hello.c 文件封装为动态库libmyhello.so并使用main.c调用其中的函数

1gcc fpic -Wall -c hello.c

2gcc -shared -o libmyhello.so hello.o

3gcc main.c -L. -lmyhello -o hello

上面两步生成了动态库libmyhello.so,其中fpic代表生成的hello.o文件与地址无关,-l后面的(myhello代表的是libmyhello.so

3)使用动态库的方法有三种

a、把库copy/usr/lib/或者/lib

b、在LD_LIBRARY_PATH环境变量中添加库所在路径

export LD_LIBRARY_PATH=库所在的路径

c、添加/etc/ld.so.conf.d/*.conf文件,把库所在的路径加到文件末尾,并执行ldconfig刷新

 

在一般的开发中,我们的库不能太大,可以通过命令

strip libmyhello.so瘦身

删除符号表,别人不可查看,减小库的体积大小


0 0
原创粉丝点击