1. 库
将自己写的代码封装在一个库中,方便其他人使用并且对代码还有一定的保密作用
库是一种可执行代码的二进制形式,可以被操作系统载入内存执行
Linux 下的库有两种:静态库 和 动态库 (共享库)
库是别人写好的现有的,成熟的,可以复用的代码,你可以使用但要记得遵守许可协议。
现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。动态链接库的名字形式为 “libxxx.so” 后缀名为 “.so
2. 静态库 与 动态库 区别
静态库与动态库被载入的时刻不同
-
静态库对函数库的链接是放在编译时期(compile time)完成的
动态库把对一些库函数的链接载入推迟到程序运行的时期(runtime) -
静态库是在链接阶段,所有相关的目标(对象)文件(object file)与牵涉到的库(library)被链接合成一个可执行文件(executable file)
动态库是在链接阶段,在目标二进制文件中创建一个库函数表单,指定链接的库函数。 -
使用静态库编译,最终生成的可执行文件较大,浪费空间和资源,但执行时与库函数无关,运行速度、调用函数的速度快。
而使用动态库编译,生成的可执行文件较小,但执行时候需要动态库载入内存,需要去外部调用函数,所以