静态库和动态库

前言在平时,我们很少关注于编译和链接的过程,在现在IDE遍布的天下,IDE为我们考虑好了一切。但是真正的藏在每个程序运行背后的东西,很多系统软件背后的运行机制都是需要我们去熟悉的,熟悉了这些,我们才能快速的解决一些相关的性能等问题。大家应该都知道对于链接来说,应用程序有两种的链接方式,一种就是静态链接,一种是动态链接。对于链接,链接的主要内容就是把各个模块之间相互引用的部分都处理好,是的各个模块之家
摘要由CSDN通过智能技术生成

前言


在平时,我们很少关注于编译和链接的过程,在现在IDE遍布的天下,IDE为我们考虑好了一切。但是真正的藏在每个程序运行背后的东西,很多系统软件背后的运行机制都是需要我们去熟悉的,熟悉了这些,我们才能快速的解决一些相关的性能等问题。

大家应该都知道对于链接来说,应用程序有两种的链接方式,一种就是静态链接,一种是动态链接。

对于链接,链接的主要内容就是把各个模块之间相互引用的部分都处理好,是的各个模块之家能够正确地衔接。链接过程主要包括了地址和空间的分配,符号决议和重定位等步骤。

静态链接和动态链接

首先来说说静态链接,静态链接,指应用程序通过静态链接的方式链接。静态链接编译的时候需要直接把代码拷贝到调用处。所以程序可以独立的执行,但是相对来说所占大小更大。静态链接的应用程序,不需要再次依赖库,发布的时候不需要带着库一块发布。

在linux当中,静态链接的文件是.a的文件

动态链接,说的就是编译的时候不直接拷贝可执行代码,通过把动态库加载到内存当中,然后程序去共享内存中的动态库代码。动态库因为不需要拷贝代码,所以引用程序小,这样节省空间。

linux下,.so是动态链接的文件。

我们通常也说A库是静态库,SO是动态库。

另外,两种库使用时间也有区别,静态库是在链接期间链接的,而动态库是在程序执行的时候链接的。

库:库就是一种可执行代码的二进制格式。可以被载入到内存中执行。

动态库:
共享:多个应用程序可以使用同一个动态库,启动程序的时候,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值