zoukankan      html  css  js  c++  java
  • 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>动态库的优缺点

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

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

  • 相关阅读:
    Elasticsearch之下载源码
    Elasticsearch之settings和mappings(图文详解)
    Editplus下载、安装并最佳配色方案(强烈推荐)
    在CentOS下安装tomcat并配置环境变量(改默认端口8080为8081)
    Elasticsearch之中文分词器插件es-ik的自定义热更新词库
    Elasticsearch之中文分词器插件es-ik的自定义词库
    Elasticsearch之IKAnalyzer的过滤停止词
    md5增加指定的加密规则,进行加密
    unity中怎样获取全部子物体的组件
    Plus One
  • 原文地址:https://www.cnblogs.com/sailifsh-lyh/p/10812873.html
Copyright © 2011-2022 走看看