网上说,静态库和动态库的差别在于,静态库会被链接进代码,动态库不会。那么我就迷惑,但静态库B依赖静态库A的时候,为啥两个库并没有合并呢?
经过一点研究才发现,其实静态库和动态库的差别要从两个方向说,一个是作为被依赖的库时,在链接阶段,静态库会被链接入项目,而动态库不会,也正是上面说的差别。而另一个方向,则是作为生成对象时,生成静态库只有编译阶段,而生成动态库既存在编译,又存在链接。
差别可以见下图:
明白了上图,之前的问题就好回答了:
- 为什么静态库B依赖静态库A,库B内并不包含A?
因为没有链接过程,所以A并没有加入B。