【Linux】关于库文件的那些事

【Linux】关于库文件的那些事,第1张

【Linux】关于库文件的那些事 前言

首先,问大家一个问题。
问:大家在C语言中必定会用到的一个函数printf(),那么你知道这个方法的实现在哪里吗?
答:就在C的库文件当中。
问:那么C的库文件在我们Linux系统中又放在哪里呢?
答:在/lib里面。
了解到这些问题,我们再来深度的了解一下库函数。

什么是库文件?

问:库文件里存放这什么?
答:库文件里面存放了很多编译好的方法,我们可以引用对应的头文件去获取这些方法。
问:头文件里有什么?
答:这些方法的声明。

在我们编写程序的时候,在引用头文件有两种引用方法:
#include
#incldue"xxxxx.h"

引用<>的头文件,系统会在/usr/lib/include中查找。
引用“”的头文件,系统会在当前位置查找。
通俗一点说,你用的系统写的方法会在/usr/lib/include中查找,你用你自己写的方法会在当前位置查找。
当然,你也可以把自己写的方法拷贝到/usr/lib/include中,这样你也可以通过<>查找你写的函数。

库文件的分类

库文件分为:静态库和共享库。
静态库形式大概是libxxx.a
共享库形式大概是libxxx.so

那么这两种库有什么不同呢?
首先我们来看静态库。
在我们编译链接过程中,我们main.exe文件中其实包含了mian.o和所调用的libxx.a静态库中的方法还有一些其他的库函数。此时,我们把libxx.a删除,并不会影响main执行,因为以及把libxx.a中的函数拷贝到main中了。

我们再看共享库。
和静态库的很明显的区别在于,在链接过程中,main程序中会标记libxx.so中的函数,在main执行的时候,会去寻找共享库。如果此时我们把libxx.so删除,就会直接崩掉。因为找不到共享库,就没办法执行共享库中的方法。

如何使用库?

在我们编译main程序时,我们要用到的命令是:

gcc -o main main.c -L(...) -l(...)

其中L后面跟着库的路径,l 后面跟着库的名字
如果库存放在标准目录底下,那么-L可以省略。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5610325.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存