为什么.o(目标文件)链接速度比.lib(静态库)快?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么.o(目标文件)链接速度比.lib(静态库)快?相关的知识,希望对你有一定的参考价值。

在我的工作场所,我们的产品编译成可执行文件,子项目链接为静态库(.lib)或共享库(.dll)。我们使用Microsoft C ++编译器。

最近我的一个同事将子项目目标从.lib(静态库)转换为.o(目标文件),并且该子项目的链接时间大幅减少。早些时候,.lib需要大约1.5分钟才能完成链接。通过链接到.o,链接时间几乎是5-6秒。

为什么链接.lib比.o更慢?

答案

如果你所做的只是编译源代码来创建一个目标文件,那么你根本就不进行任何链接。这意味着对源代码中存在的外部函数和变量的任何引用都将无效,因为它们的地址尚未解析。

https://www.cprogramming.com/compilingandlinking.html

以上是关于为什么.o(目标文件)链接速度比.lib(静态库)快?的主要内容,如果未能解决你的问题,请参考以下文章

C语言里面的动态库和静态库

Windows和Linux下的目标文件静态库和动态库

Windows和Linux下的目标文件静态库和动态库

动静态链接库

静态库的制作和使用

Visual Studio 2017 动态链接库(DLL /LIB) 静态链接库(LIB)的思考