码迷,mamicode.com
首页 > 系统相关 > 详细

linux下的动态库

时间:2019-01-05 00:12:55      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:config   就是   打开   动态链接   lin   home   重新编译   test   shared   

也就是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下的动态库

标签:config   就是   打开   动态链接   lin   home   重新编译   test   shared   

原文地址:https://www.cnblogs.com/luoshiyong/p/10223026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!