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下的动态库的主要内容,如果未能解决你的问题,请参考以下文章