一、库是什么?
简介:
假如,你有一个庞大的工程,代码量达到数百兆甚至是数G,你经常会遇到好多重复或常用的地方。每次使用到这些地方时如果都重新写一份基本相同的代码,这当然可以,不过这样会大大地降低工作效率,而且影响代码的可读性。更不好的是日后的修改工作会使你变得非常的繁琐,这样很不利于后期的维护。如果把这些相同的功能代码分别以模块的形式存放起来,把他们编译成库,使用时直接调用他们的库,这样直接使用起来非常的方便,更有利于代码的维护和升级。
库的概念:
库是由源代码编译出来的,是对一组源文件编译出来的中间文件(可以看我上一篇文章,在代码经过汇编过程后)。使用库可以做到不开放源代码,同时令其他单元可以调用到的效果,实现良好的接口封装。
其实,现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。比如我们常使用的printf
函数,就是c标准库提供的函数。我们在使用时只需要包含相应的头文件就可以使用(非静态编译还要有相应的库文件)。而不用关心printf
函数具体是如何实现的,这样就大大提高了程序员编写代码的效率。
二、库的分类
库大体上可以分为两类:静态库和动态库。在windows中静态库是以 .lib
为后缀的文件,共享库是以 .dll
为后缀的文件。在linux中静态库是以 .a
为后缀的文件,动态库是以