(Linux)库的基本理解

库的概念

        库是一套方法或数据集,本质就是一些文件。在开发的过程中,会经常用到一些基础的功能,例如C语言的printf函数,如果每个程序员在开发时都要写一个printf函数或者其它经常用到的函数,那会非常影响效率。为了使得开发更加高效,将一些基础常用的功能或者数据整合成库,不需要再重复编写。

库的命名规则

以lib开头,后面接上库的名字,然后是后缀,例如C语言的静态库 libc.a  ,其中 c 就是这个库的名字,后缀是 .a  。除此之外,在后缀后面可能还会接上版本,如动态库 libc.so.2.77  。

库的使用

概述

        我们知道程序形成可执行文件需要经过预处理、编译、汇编、链接四个阶段。要使用库中的方法,就要将程序与库中的方法链接起来,使程序能找到对应的方法。要链接库有动态链接和静态链接两种方式,由此可将库分为动态库(共享库)和静态库两种。如果把库中的方法想象成书,那么动态链接就好比去图书馆看书,图书馆就相当于动态库,静态链接则好比去书店把书买回家看,书店就相当于静态库。

动态链接与动态库

        动态链接,就是让程序能找到动态库中对应方法的地址,程序运行时,会跳到库中执行对应的方法(此举称为库函数调用),完成之后再返回(库函数返回)。

        我们知道要运行的程序都要先加载到内存中,使用动态库时,由于需要跳转到动态库中执行对应的方法,会将动态库加载到内存中,每次要使用的时候就跳到动态库里面运行然后返回。那么当这个动态库缺失时,所有相关的程序都无法运行。

静态链接与静态库

        静态链接,则是直接将静态库中该方法的代码实现到我们写的程序中,使用时像函数一样直接调用。根据静态链接的特点,我们不难发现:只需要在程序链接时将使用的方法拷贝到程序中,之后就不再需要静态库。但是相比动态链接,静态链接形成的可执行程序会占更大的空间。

库的使用实例

        首先我们先随便写一个简单的.c文件并用gcc编译成可执行文件

        接着使用命令  ldd  [文件名]   就能看到该可执行文件使用的库,从下图可以看到用的库是动态库libc.so.6 ,也就是c的动态库。

        如果要使用静态链接,可以在使用gcc命令后添加-static选项,也就是  gcc  [.c文件名]  -o  [文件名]  -static   。但是静态库一般没有安装,需要另外下载,这里不再演示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值