.lib文件与使用ar创建的.a文件有何不同?

时间:2016-07-15 12:03:08

标签: c windows linker static-libraries

我们正在将我们的Linux开发移植到Windows。

要创建静态库,我们仍然使用Windows(Msys2)下的ar来创建libXXX.a文件。 windows方式实际上是使用一些Windows工具创建.lib文件。但libXXX.a文件似乎在我们的msys2工具链上正常工作。但链接此文件非常慢。那么.a.lib文件之间有什么区别?创建.lib文件会加快链接速度吗?

1 个答案:

答案 0 :(得分:0)

.a.lib都是包含一堆目标文件的档案。区别在于前者是ELF二进制文件,后者是COFF文件(MS COFF)。可能您的工具链需要额外的努力来链接非本机对象格式。

P.S。 .lib文件通常也可能包含用于创建动态导入而不是COFF对象的存根。并且它也可能因同样的原因(非本机数据格式)影响构建时间。

P.P.S显然,为了加快链接过程,所有输入必须具有相同的格式,这对链接器来说是原生的。