linux下共享库的制作及常见的问题
2017-12-02 17:03
281 查看
将自己写的链表生成共享库
1、编译2、设置库名:
库的名称格式:lib + XXX + 版本号.so (库的名称为XXX)
-shared 生成共享文件库 -fpic 动态链接
![](http://i2.51cto.com/images/blog/201712/02/05afe2074d3dfa11f49ffae7ebd9fafc.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
3、把头文件和.so文件放到系统目录下
![](http://i2.51cto.com/images/blog/201712/02/dd8fc12ca7e193396d3a3b80e1508396.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
(使用共享库了,把之前的#include “list.h” 改成 #include < list.h > ,删除该文件夹内的list.* ,就可以运行成功了)
4、链接库:gcc main.c -o main -lList
![](http://i2.51cto.com/images/blog/201712/02/6e1e3b4fc425cf317b1ceca5f7685588.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
注意:如果.h没有放在系统路径下,要使用-I路径
如果.so没有放在系统路径下,要使用-L路径
如果共享库并没有放在系统路径下,如何解决运行时找不到的问题
1) 首先,把.h和.so移动到非系统路径下,链接生成可执行文件,运行时找不到:![](http://i2.51cto.com/images/blog/201712/02/6a97fbd1bde7fda5ec83c4ef5de33da4.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2) 解决方法1:修改共享库配置文件/etc/ld.so.conf,把.so的路径加入到配置文件中;执行:ldconfig
![](http://i2.51cto.com/images/blog/201712/02/67b2a8e8285501c16f660893b5d1a231.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
解决方法2:配环境变量LD_LIBRARY_PATH
(不过,这种方法是临时的,只对当前用户本次登录有效)
![](http://i2.51cto.com/images/blog/201712/02/1c89d46742816546b697aba56386c749.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
也可以查看环境变量的值:$LD_LIBRARY_PATH
然后修改,LD_LIBRARY_PATH = $LD_LIBRARY_PATH:/mnt/hgfs/share/
相关文章推荐
- linux 静态库和动态库(共享库)的制作与使用(注意覆盖问题)
- Linux共享内存常见问题分析
- 嵌入式linux开发中常见的虚拟机和主机的文件共享问题
- 让疑问归零:宽带共享常见经典问题
- linux常见问题FAQ
- LINUX 常见问题1000个详细解答
- 有问题?朝这儿看 !!! LINUX 常见问题1000个详细解答[精华版]
- [分享]Linux系统初学者的常见问题解决集结大全
- DNN皮肤应用与制作常见问题
- 学习中LINUX中常见问题(精华)
- Linux常见问题1000个为什么详细解答之四
- Linux常见问题1000个为什么详细解答之一
- linux汇编 常见问题 (zz)
- Linux KDevelop开发常见问题
- RPM软件包使用常见问题 ----------- { rpm 使用 答疑 FAQ (Linux) }
- linux常见问题(编程篇)
- Linux常见问题1000个为什么详细解答之三
- linux常见问题(系统篇)
- LINUX 常见问题1000个详细解答