初识Linux · 动静态库(incomplete)
目录
前言:
继上文,我们从磁盘的理解,到了文件系统框架的基本搭建,再到软硬链接部分,我们开始逐渐理解了为什么运行程序需要./a.out了,这个前面的.是什么我们也知道了。
可是我们在文件权限部分,我们已经见识了最基本的库,知道了Linux的动态库的后缀是.so 静态库是.a,Windows系统的动态库是.dll,静态库是.lib。并且我们知道库的名字要去掉前缀,去掉后缀。这是我们最开始的对于库的认识。
那么我们是否是否使用过库呢?
当然是使用过的,在使用C语言C++的时候,我们使用的头文件所在的库,比如std库,我们肯定是使用过的。那么库的作用是什么呢?
在stl容器里面,都是有基本函数的接口,比如vector的push_back,我们使用的都是对应的接口,那么具体的实现在哪里呢?
具体的实现肯定是放在.cc文件,经过编译器编译成了.o文件,经过糅合起来,形成了最终的库。
现在我们就对于静态库,动态库,我们从是什么,为什么,怎么办三个方面来谈论。
静态库
为了生成静态库,我们先模仿实现多个.c文件多个.h文件:

然后在里面写入对应的代码:
#pragma once int Sub(int x,int y); #include "sub.h" int Sub(int x,int y) { return x - y; } #include "add.h" int Add(int x,int y) { return x + y; } #pragma once int Add(int x,int y);