• 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>动态库的优缺点

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

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

  • 相关阅读:
    《Java数据结构与算法》笔记CH43用栈实现分隔符匹配
    《Java数据结构与算法》笔记CH2无序数组
    《Java数据结构与算法》笔记CH3简单排序
    《Java数据结构与算法》笔记CH41栈的实现
    《Java数据结构与算法》笔记CH42用栈实现字符串反转
    java流程控制.3循环结构
    java方法.1方法的定义和调用
    java流程控制.1scanner
    java方法.2方法的重载
    java方法.3递归
  • 原文地址:https://www.cnblogs.com/sailifsh-lyh/p/10812873.html
Copyright © 2020-2023  润新知