linux下的动态库

Posted luoshiyong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下的动态库相关的知识,希望对你有一定的参考价值。

也就是windows下的.dll

1.命名

2.制作

(1)生成与位置无关的.o文件

gcc -fPIC -c *.c -I ../include  

(2)将.o打包成动态库(或者叫共享库)

gcc -shared -o libmytest.so *.o -I ../include

3.发布和使用

(1)gcc main.c lib/libmytest.so -o app -I include

(2)gcc main.c -L ./lib -l mytest -o app

4.如何解决动态库无法加载得问题

ldd //查看可执行程序依赖所有得库

echo $PATH

--解决1:把该动态库放入总目录下得lib下(不建议这样做,万一与os相关得某个动态库重名就尴尬了)

--解决2:把该库制定该LD_LIBRARY_PATH这个环境变量(临时用)

echo $LD_LIBRARY_PATH

赋值:export LD_LIBRARY_PATH=./lib

--解决3:打开家目录下得.bashrc

G   //光标移动到最后一行

加上export LD_LIBRARY_PATH=/home/itcast/3day/lib           //动态库得绝对路径

关掉终端,然后才会生效

--解决4:

(1):需要找到动态链接器得配置文件

cd /etc

ls

ls -l ld.so.conf

sudo vi ld.so.conf

(2):动态库的路径写到配置文件中

然后加上动态库的绝对路径

(3)更新:sudo  ldconfig -v

5.优缺点

只有在程序执行的时候才会调用动态库

优点:执行程序体积小,动态库更新了不用重新编译程序

缺点:需要把动态库提供给用户,加载速度慢

以上是关于linux下的动态库的主要内容,如果未能解决你的问题,请参考以下文章

linux下的静态库和动态库

linux 下的动态库制作 以及在python 中如何调用 c 函数库

Linux下的静态链接库和动态链接库

面试 Linux 下的动态链接库问题

linux下的动态链接库管理

Linux下的.so文件是动态链接库