.LIB 和 .OBJ 文件有啥区别? (Visual Studio C++)
Posted
技术标签:
【中文标题】.LIB 和 .OBJ 文件有啥区别? (Visual Studio C++)【英文标题】:What is the difference between .LIB and .OBJ files? (Visual Studio C++).LIB 和 .OBJ 文件有什么区别? (Visual Studio C++) 【发布时间】:2010-11-24 13:37:50 【问题描述】:我知道 .OBJ 是编译一个编译单元的结果,.LIB 是一个静态库,可以从几个 .OBJ 创建,但这种区别似乎只在编译单元的数量上。还有其他区别吗?是相同还是不同的文件格式?
当我想知道在两个(或更多).LIB 中定义的相同静态变量是否在链接到最终可执行文件期间被合并时,我遇到了这个问题。对于 .OBJ,变量被合并。但在 .LIB 中是否也一样?
【问题讨论】:
【参考方案1】:.LIB 文件是与索引连接在一起的 .OBJ 文件的集合。链接器的处理方式也应该没有区别。
【讨论】:
【参考方案2】:看起来 .lib 文件就像 .obj 文件的集合。有些人还把将几个 .obj 文件转换为 .lib 文件的过程称为存档。在这种情况下,.lib 文件是一盒 .obj 文件,链接器可以平等对待。
【讨论】:
.lib
在 windows 中与.a
在 linux 中相同。以上是关于.LIB 和 .OBJ 文件有啥区别? (Visual Studio C++)的主要内容,如果未能解决你的问题,请参考以下文章
jdk1.6.0_02\jre\lib\ext和jre1.6.0_02\lib\ext有啥区别?