zoukankan      html  css  js  c++  java
  • 静态库与动态库

    静态库复制静态库作为程序代码段的一部分,在可执行程序运行前就已经加入到执行码中,

        成为执行程序的一部分

        1.优点:将函数库中的函数本地化,寻址方便,速度快,等于字典一函数使用效率

        2.缺点:笑话系统资源较大,每个进程使用静态库都要复制一份,无端浪费内存

        3.使用场景:多用于核心程序,保证时效性,可以忽视空间

    ar rcs libmylib.a file1.o

    动态库(共享库)

      机制:共享代码(不共享数据)

      优点:节省内存(共享),易于更新(动态链接)

      缺点:相较于静态库调用速度略慢(延迟绑定机制)

      使用场景:1.对程序执行的速度要求不是特别强烈,而相对于系统资源有一定要求的场景

           2.对于更新比较频繁的程序

              1)停止运行程序

              2)使用新库覆盖旧库,保证“接口”一致

              3)重新启动程序

      重点强调:1.动态库是否加载到内存,取决于程序是否运行

           2.动态库加载到内存的位置不固定

    共享库的创建比较简单,基本有两步。首先使用-fPIC或-fpic创建目标文件,PIC或
    pic表示位置无关代码,然后就可以使用以下格式创建共享库了: gcc -share -Wl,-
    soname,your_soname -o library_name file_list library_list
    gcc -fPIC -c a.c
    gcc -fPIC -c b.c
    gcc -shared -Wl -o libmyab.so a.o b.o
    加载共享库方法:
    1.拷贝自己制作的共享库到/lib或者/usr/lib
    2.临时设置LD_LIBRARY_PATH, export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径
    3.永久设置,把export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径 设置到∼/.bashrc
    或者/etc/profile
    4.设置/etc/ld.so.conf, 把库所在路径追加到此配置文件里
  • 相关阅读:
    java中源代码和lib库中有包名和类名都相同的类(转)
    Python 入门之基本数据类型
    Python 学习经历分享
    String 与不可变对象
    String 的常用操作
    Java 中的国际化
    接口和工厂设计模式
    抽象类和模板设计模式
    Java中的访问控制权限
    Java 中类的初始化过程
  • 原文地址:https://www.cnblogs.com/xiangtingshen/p/10415915.html
Copyright © 2011-2022 走看看