ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux中共享库的制作和使用

2021-11-18 21:59:10  阅读:180  来源: 互联网

标签:LD LIBRARY 库中 Linux PATH 共享 动态 制作


共享库的制作

1.命名规则

lib + 名字 + .so

2.制作步骤

1)生成与位置无关的代码(生成与位置无关的.o,那么静态库是生成与位置有关的.o文件,因为制作静态库时,是将.o文件打包到静态库中,在虚拟内存中位置是固定的;而动态库只有在程序运行时,才会把动态库中的程序加载到虚拟内存的共享库区域中,而此位置是不固定的;

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

3)发布和使用共享库

4)解决程序执行时动态库无法被加载的问题

a.放到系统的库目录中(/lib)  —— 不允许使用

b.临时测试

        环境变量:LD_LIBRARY_PATH=将动态库中的路径设置给该变量

        将设置的值,导入到系统环境变量中:export LD_LIBRARY_PATH

        当终端关闭,设置会失效

c.不常用的方法(永久设置)

        在家目录的.bashrc文件中添加一句话:export LD_LIBRARY_PATH=动态库目录的绝对路径

        .bashrc修改完成,需要重启终端

d. 找到动态连接器的配置文件 —— /etc/ld.so.conf

     动态库的路径写到配置文件中 —— 绝对路径

      更新 —— sudo ldconfig -v

3.动态库的优缺点

优点:执行程序体积小;

           动态库更新了,不需要重新编译程序(函数接口不变)

缺点:发布程序时,需要将动态库提供给用户;

            动态库没有被打包到应用程序中,加载速度相对较慢;

标签:LD,LIBRARY,库中,Linux,PATH,共享,动态,制作
来源: https://blog.csdn.net/zjwson/article/details/121410163

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有