动态库(共享库)的制作及优缺点

1)命名规则

       lib  名字 +.so

2)制作步骤

1、生成与位置无关的代码(生成与位置无关的.o)

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

-I  指定头文件路径

2、把.o打包共享库(动态库)

  gcc -shared -o  libMycalc.so   *.o   -I include

3)使用方法

    第一种使用方法

  gcc main.c lib/libMylib.so -o app -I include           

    第二种使用方法

  gcc main -I include -L lib -l Mylib -o myapp

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

          1、放到系统的库目录中--不允许使用

          2、临时测试(存放动态库的环境变量:LD_LIBRARY_PATH,将动态库的路径设置给变量)

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

                当终端关闭,设置会失效

          3、不常用的方法(永久设置):

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

                 原因:在开启终端的时候,会读取.bashrc的配置文件

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

          4、   

                  1.需要找动态连接器的配置文件

                           sudo vim /etc/ld.so.conf

                  2.动态库的路径写道配置文件中

                           /home/myprojiect/lib

                  3.更新 -- sudo ldconfig -v(信息的输出)

命令

ldd + 可执行程序

显示所有可以依赖的库 

5)优点

1、执行程序体积小

2、动态库更新了,不需要重新编译程序。

               1》函数接口不变

     缺点:

1、发布程序的时候,需要将动态库提供给用户

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

6)总结

动态库在打包可执行程序的时候不会将动态库打包到可执行程序中,只会做一个标记,也就是需要调用哪些函数,在执行的时候需要先加载动态库,然后在调用动态库里面的函数然后执行相应的操作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值