Linux基础12-静态库和动态库

1. 静态库

  <1>  命名规则

    lib+库名+ .a

  <2> 制作静态库

    a.生成对应的.o文件

      gcc  文件名字 -c -I

    b.将生产的.o文件打包 打包工具ar 

      ar + rcs + 生成静态库的名(libMyname.a)+需要用到的.o文件

  <3> 静态库的使用

    发布的静态库

      头文件(include文件夹内)+.a文件(lib文件夹中)

  2.静态库的优缺点

  <1> 查看.a文件  nm + libName.a

  <2> 查看out文件 nm + out文件

  <3>优点:

      a.发布程序的时候,无需再提供对应的库

      b.库的加载速度快

  <4>缺点:

      a.库被打包到应用程序中,程序的提及很大

      b.如果库发生改变,程序需要重新进行编译

3.动态库,共享库

  <1>命名规则

    a.lib+名字+.so

  <2> 制作步骤

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

    b.将.o打包成动态库

  <3>发布和使用动态库

  <4>解决程序执行时,动态库无法被加载

    a.放到系统的库目录,不允许使用

    b.临时测试

      环境变量:LD_LIBRARY_PATH,将动态库路径设置给变量

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

      终端关闭后,设置会失效

    c.不常使用的方法

      再.bashrc重设置 export LD_LABRARY_PATH=动态库的绝对路径

      .bashrc需要重启终端

    d.常用的方式

      需要找到动态链器的配置文件  /etc/ld.so.conf

sailfish@DESKTOP-GSV91L5:/etc$ cat ld.so.conf
include /etc/ld.so.conf.d/*.conf

      动态库的路径写入到配置文件中

      更新文件--sudo ldconfig -v

  <5>动态库的优缺点

    优点:体积小、更新方便(函数接口不变)

    缺点:发布程序时,需要提供动态库、动态库没有打包到程序中,程序速度相对比较慢

原文地址:https://www.cnblogs.com/sailifsh-lyh/p/10812873.html