一.写在前面
本文仅仅是总结了,静态库,动态库的使用及基本编译方法。至于库本身的格式,内存地址等较底层问题,则等有时间放到操作系统一类的文章中研究。下面开始正题吧。
二.介绍
从源代码到可执行程序,通常要经过最重要的两大步是:编译,链接。编译就是将源文件生成中间文件的过程,在linux下就是生成
.obj 文件。链接就是用链接器将,这些个中间文件有序地”糅合“在一起,构成一个可执行文件。通常,一个.c文件或者.cpp源文件编译后,就会对应生成一个.obj文件。
那么库文件是什么东西呢?其实库文件就是将这些中间文件.obj进行打包生成的文件。那么为什么要将这些obj文件打包成库文件呢?一个很重要的原因是,方便代码复用。通常,我们都会有自己写的一些公用的函数,一般是一些工具类的函数。然后再不同的项目中,经常会引用到这些公用的函数。显而易见的做法是,将公用函数的.h文件和.cpp文件分别丢到某个项目的.h文件目录或.cpp文件目录中,编译的时候也跟对待其他的源文件一样调用g++或者gcc进行编译。如果是引用的第三方文件不多还好,要是使用到了一些大型的第三方库比如zlib,openssl等,那么编译这些库都得花很长的时间。
那么