今天我们来讲动静态库!
首先我们来粗粒度的划分一下动态库和静态库。
动态库就是只有一份库文件,所有想用该库的文件与改库文件建立链接,然后使用。这样可以提高代码复用率,避免重复拷贝产生没必要的内存消耗。
静态库,就是那个文件想用,就直接把库文件的内容拷贝过去,这样可以减少出现文件丢失的情况,略微提高运行速度,但是会造成巨大的空间消耗,大多数情况我们都选择动态库!
我们来通过写一个简单的计算器去探究动静态库。
首先我们看一下相关文件,至于具体的计算器实现代码太简单就不摆了。
这样我们得到所有的.o文件以后给别人就只需要把.o文件和代码丢给别人就可以了。
不需要一大堆之前的头文件,源文件了。
于是得到我们的第一个结论
然后我们再来学习静态库的生成。
然后如果我们直接链接就会报一堆错误!
这是因为gcc默认不认识第三方库文件,所以我们必须要指明文件!
但是我们发现仍然不行,原因是其真正的名字必须去掉lib和.a才行
然后-L.是表示在什么目录下(如果不加报错就加上)
-l是用来指明库名字。
如果是c标准库就不用加这些东西,所以我们以前从来没有加上过这些东西。
但是如果这个时候我们查ldd