美文网首页
动态库静态库基础概念

动态库静态库基础概念

作者: 菜菜子MJ | 来源:发表于2023-03-28 11:44 被阅读0次
  • 静态库
    静态库不是一整个文件。而是一些.o文件的集合。
    链接器在链接静态链接库的时候是以目标文件(.o)为单位的,如果该静态库里的某些方法没有任何地方调用,则这些没有被调用到的方法或变量将会被丢弃掉,不会被链接到目标程序中,这样做可以大大减小生成二进制文件的体积。
  • 动态库
    在程序的链接阶段时,链接器只是拷贝了一些重定位和符号信息。在程序加载(execve)时才会解析so文件中代码和数据的引用。在程序运行的时候,被调用的动态链接库函数被安置在内存的某个地方,所有调用它的程序将指向这个代码段。因此,这些代码必须使用相对地址,而不是绝对地址。在编译的时候,我们需要告诉编译器,这些对象文件是用来做动态链接库的,所以要用地址无关代码(Position Independent Code (PIC))。
  • 库的优先级
    linux下进行连接的缺省操作是首先连接动态库
  • 库的搜索路径
    • Linux
      1、编译链接库时的搜索路径顺序(.a和.so)
      (1)-L选项指定的目录,例如:g++ -o test_fun test_fun.c -L. -lfun
      (2)-Wl,rpath指定的目录。例如:gcc -o foo foo.c -L. -lfoo -Wl,-rpath=./
      (3)环境变量LD_LIBRARY_PATH中设置的目录。
      (4)/etc/ld.so.cache文件中缓存的文件位置。
      (5)默认的/usr/lib或者/usr/lib64。
      2、程序运行时搜索动态库文件的顺序(.so)
      (1)-Wl,rpath指定的目录。例如:gcc -o foo foo.c -L. -lfoo -Wl,-rpath=./
      (2)环境变量LD_LIBRARY_PATH中设置的目录。
      (3)/etc/ld.so.cache文件中缓存的文件位置。
      (4)默认的/usr/lib或者/usr/lib64。
    • Windows
      1、动态库搜索路径
      (1)应用程序所在目录
      (2)当前目录
      (3)Windows SYSTEM目录
      (4)Windows目录
      (5)PATH环境变量指定的路径

参考:
Linux部分 14、静态和动态链接、环境变量

相关文章

  • 知识点:OC中.a和framework的区别(转)

    OC中的库概念 库是共享程序代码的方式,一般分为静态库和动态库 静态库 && 动态库 区别 静态库:链接时,完整的...

  • OC中.a和framework的区别

    OC中的库概念 库是共享程序代码的方式,一般分为静态库和动态库 静态库 && 动态库 区别 静态库:链接时,完整的...

  • iOS-SDK开发之制作自己的静态库 .framework和.a

    先来看几个概念定义: 什么是库?库是共享程序代码的方式,一般分为静态库和动态库。 静态库和动态库的区别?静态库:链...

  • iOS 打包.framework

    一、概念了解1.什么是库?库是共享程序代码的方式,一般分为静态库和动态库。 2.静态库和动态库的区别静态库:链接时...

  • ios中静态库.a的制作

    在ios中制作静态库之前,先来了解关于静态库的一些概念。 八、静态库和动态库在使用上的区别。静态库:链接时,静态库...

  • ios中静态库.a的制作和使用

    在ios中制作静态库之前,先来了解关于静态库的一些概念。 八、静态库和动态库在使用上的区别。静态库:链接时,静态库...

  • iOS 静态库和动态库的制作

    静态库和动态库 一、静态库和动态库的存在形式 静态库: .a 和 .framework 动态库: .dylib 和...

  • Swift 静态库调研

    一、关于库的背景知识1、静态库和动态库静态库动态库系统动态库Cocoa Touch Framework静态库 v....

  • iOS开发-你不了解的库(一)

    本文涉及的知识点:动态库&静态库的基本概念动态库&静态库的区别&加载方式 库 库是程序代码的集合,将多个文件组织起...

  • Xcode7制作动态及静态Framework

    iOS中的静态库和动态库 ** 概念 **静态库(Static Library)以 .a 为后缀,它是你的源码的实...

网友评论

      本文标题:动态库静态库基础概念

      本文链接:https://www.haomeiwen.com/subject/pigtddtx.html