【问题标题】:Which format does static library (*.lib) files use? Where can I find "Official" specifications of *.LIB file structure/format?静态库 (*.lib) 文件使用哪种格式?我在哪里可以找到 *.LIB 文件结构/格式的“官方”规范?
【发布时间】:2011-01-23 05:06:56
【问题描述】:

刚才我发现*nix系统中的静态库,也就是*.a库 只不过是ar fromat 中的可重定位文件(*.o 文件)的档案。

  1. windows 中的静态库(*.lib 文件)呢?它们采用哪种格式?

  2. 我找到了一篇解释 *.lib 文件结构的文章 (archived copy 1, archived copy 2)。但是我在哪里可以找到 *.lib 文件结构/格式的“官方”规范?

  3. 除了 mingw 的 ar.exe 之外,Microsoft 是否有任何工具可以提取 *.lib 和 *.a 文件的可重定位对象?

编辑:

我想知道为什么我无法回答这个问题。如果没有官方规范。那么编译器(更准确地说是“链接器”)编写器如何处理 *.LIB 文件?

【问题讨论】:

    标签: visual-studio gcc mingw static-libraries


    【解决方案1】:

    我发现 *.LIB 文件使用 ar 文件格式。

    官方规范:第 7 节。Microsoft Portable Executable and Common Object File Format Specification 的“存档(库)文件格式”描述了这种格式。

    【讨论】:

    【解决方案2】:

    mingw 的ar 在 *.lib 文件上工作得很好——即使是在 VisualStudio 下创建的文件。

    我们实际上在过去使用它来提取我们需要的部分库,当它包含一些我们无法链接的其他内容时(由于与其他库的冲突)。有点 hacky,但它确实有效。

    【讨论】:

    • 这是一条有用的信息。但这是否意味着 *.lib 文件也是ar 格式?可能是,mingw 的 ar.exe 正在抽象底层格式并以相同的方式表现。
    • 不知道。我猜我主要是在回答#3。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    相关资源
    最近更新 更多