gpt4 book ai didi

c++ - 编译器库与操作系统库

转载 作者:IT老高 更新时间:2023-10-28 23:01:21 28 4
gpt4 key购买 nike

我注意到我的编译器 (MinGW) 和 Windows 8 SDK 都带有相同的库,保存命名约定(即 Windows 8 上的 win32.lib SDK 是 libwin32.a 在 MinGW 库中)。

  • 是否所有编译器都带有这些库?
  • 这些库是否适用于多种操作系统?
  • Windows 8 SDK 附带的库与编译器附带的库之间有什么区别(如果有)?

最佳答案

有两种库:

  • 导入库:
    这些库仅列出在哪里可以找到对变量/函数/等的引用,但它们不包含代码本身。

  • “普通”库(包含包含机器代码的目标文件):
    这些库包含目标文件,其中包含实际的机器代码。

操作系统自带的库一般都是导入库。
毕竟,实际的代码在操作系统本身;导入库只是告诉你如何使用操作系统中提供的代码。
为什么这是必要的?因为程序无法在运行时“发现”操作系统上可用的库,所以程序必须知道什么是可用的编译时

编译器自带的一般都是代码库;它们包含编译器需要的代码(取决于您的特定编译器)以完成您的程序。

但是,库没有单一的“标准格式”; Microsoft 使用 COFF,但 *nix 工具使用 ELF。
因此,当 Microsoft 为系统提供导入库时,它只以 COFF 格式提供它们,这对 Visual C++ 编译器来说非常有用——但对其他编译器来说不是那么有用。

这会导致诸如 MinGW 之类的编译器供应商被迫为他们打算针对的操作系统创建自己的自己的导入库——这些库的目的是与操作系统厂商(如微软)提供的完全相同,但它们的格式不同。

这就是为什么您会看到以多种方式提供的看似相似的库。

关于c++ - 编译器库与操作系统库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16513099/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com