Linux篇13动静态库

1.动静态块的基本原理

动静态库本质上是可执行程序的“半成品”

代码编译分为四个阶段

  • 预处理: 生成.i文件,还是c代码
  • 编译:生成.s文件 汇编语言
  • 汇编:生成.o文件 二进制文件
  • 链接 bin 真正的可执行程序

我们将一群.o文件打包就变成了库 (.so/ .a)。所以库的本质是一堆.o的集合,不包含main,但是包含了大量的方法

2.认识动静态库

静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。相当于将库的代码拷贝到你的代码里面,使你的可执行文件变大。
动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。

image-20220704202119007

在Linux下 .so为动态库,.a为静态库

在Windows下, .dll为动态库,.lib为静态库

libc.so.6 ,lib和.so之间的就是库名,所以该库是c动态库

3.动静态库的特征

image-20220704204650435

4.如何制作动静态库

  • 首先都要生成.o文件

    image-20220704221215573

  • 生成.a .so 文件

    image-20220704221249572

  • 打包(.h文件和库文件(.a/.so))

    image-20220704221923219

    image-20220704221939613

  • 使用动静态库

    1. 编译

      1. image-20220704223930331

      _I 后面接头文件目录, -L后面接库路径, -l后面接具体哪个库

    2. 运行可执行程序

      静态链接的可执行程序能直接运行,动态链接的不行,因为操作系统找不到动态库

      需要导入环境变量 export LD_LIBRARY_PATH= LD_LIBRARY_PATH:“.so文件的路径”

rt LD_LIBRARY_PATH= LD_LIBRARY_PATH:“.so文件的路径”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逃跑的机械工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值