静态库和动态库的差别

网上说,静态库和动态库的差别在于,静态库会被链接进代码,动态库不会。那么我就迷惑,但静态库B依赖静态库A的时候,为啥两个库并没有合并呢?

经过一点研究才发现,其实静态库和动态库的差别要从两个方向说,一个是作为被依赖的库时,在链接阶段,静态库会被链接入项目,而动态库不会,也正是上面说的差别。而另一个方向,则是作为生成对象时,生成静态库只有编译阶段,而生成动态库既存在编译,又存在链接。

差别可以见下图:


image.png

明白了上图,之前的问题就好回答了:

  • 为什么静态库B依赖静态库A,库B内并不包含A?
    因为没有链接过程,所以A并没有加入B。

你可能感兴趣的:(静态库和动态库的差别)