linux下的动态库与静态库

本文介绍了Linux系统中的静态库和动态库概念及其区别。静态库在编译时会被整合进程序,不依赖外部库,但体积较大;动态库在运行时加载,节省磁盘空间,便于维护和更新,但需要依赖相应的库文件。动态库的文件扩展名为.so,静态库为.a。文章还详细讲解了如何创建和使用静态库及动态库,包括ar命令、gcc编译选项以及动态链接的方法。
摘要由CSDN通过智能技术生成

今天就来谈一下linux中比较重要的一个知识点–静态库和动态库。说到静态库和动态库啊,不得不提的就是程序编译链接的过程,现在有很多的IDE我们很少去关注程序编译链接的本质,但是其背后的运行机制却是必须要我我们熟悉的,我之前写过一片就是C、C++程序的编译链接过程的博客,详情见下:
http://blog.csdn.net/payshent/article/details/72314685
库:
说到库那么什么是库呢?库从本质上来说就是一种可执行代码的二进制形式,可以被操作系统载入内存中执行。
所谓库就是一些功能代码经过编译链接的可执行形式。
我们通常使用的库就是库就是别人写好的,现有的、可以用的、成熟的代码,在我们开发的过程中只用引入文件链接到我们的程序中即可。
在说链接的时候,链接的主要内容就是把各个模块之间相互引用的部分处理好,使得各个模块之间可以正确的衔接。而链接也是有两种的链接形式:静态链接与动态链接。
静态链接:
所谓的静态链接就是:在编译链接的时候直接把需要执行的代码拷贝到要执行的地方(要调用的地方)。
优点:
1、程序发布的时候不需要依赖库,也即是不需要带着库一起发布,程序可以独立运行。
2、代码装载的速度快,执行速度略比动态链接快。


缺点:缺点就是它的体积就会变大,包含相同的公共代码造成浪费。
在linux中静态链接的文件就是.a的文件。

动态链接:
动态链接就是在编译的时候不直接拷贝可执行的代码,而是通过记录一些符号和参数。在程序运行或加载的时候将这些信息传递给操作系统,操作系统负责将需要的动态库加载到内存中去,程序在运行大指定代码的时候,去共享内存中已经加载的动态库可执行代码,最终达到运行时链接的目的。
优点:
1、多个程序可以共享同一段代码,不需要在磁盘上存储多个拷贝,引用程序小比较节省

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值