接触到这个概念,是在学习制作静态库以及动态库之前,首先需要了解其概念。
首先我们需要知道:什么是库呢?
库就是一些可执行文件的集合,他的强大之处在于,可以省去相关部分的编译阶段。
那什么是静态库呢? 每次我们编译源文件的时候,需要调用的相关库,如果该库是静态库的话,该库和可执行文件会一起编译到源文件生成的可执行文件中。 如果该库大小为50M,调用它的源文件生成的可执行文件的大小,就是.out 文件大小+50M
从上面可以看出,静态库的缺点是,太占用内存,如果我们有多个文件调用它,那么空间占用将非常大。
什么是动态库呢? 所谓动态库,其调用方式与静态相反,只在 .out 文件执行到相关调用部分时,才会去库里调用,由原文件编译生成的 .out 文件就是本身的大小。
从上面也可以看出,动态库的缺点是,由于其没有被编译到内存中,调用时会消耗部分时间。
接下来谈谈二者的优点以及应用场景:
静态库的话 其优点是,速度快,适合与一些开机时需用的函数去调用。
动态库的话 其优点是,暂用内存空间小,在一些对速度没有绝对性要求的场合比较合适。