为什么 unistd.h 在 MSYS2 和 mingw-w64-x86_64-toolchain 中不同?

Why is unistd.h different in MSYS2 and mingw-w64-x86_64-toolchain?

我是运行推荐MinGW的CLion。最新的似乎是 MSYS2。一开始CLion并没有找到gcc、cmake等。为此,我必须安装 mingw-w64-x86_64-toolchain,它会在我的 msys64(MSYS2 安装文件夹)文件夹中创建一个 mingw64 文件夹。

我正在尝试编译的软件需要 MSVC 函数或 POSIX 函数,例如 sysconf。但是 sysconf 是未定义的,至少在 mingw-w64-x86_64-toolchain 的 unistd.h 中是这样。在 MSYS2 本身的主要 unistd.h 中它是可用的。

那么,最大的区别是什么?为什么它们不一样?

MSYS2 环境提供 two toolchains 在 Windows 上针对两个不同的 运行 时间。

  1. /usr 中的 msys2 工具链生成依赖于 msys-2 的程序。0.dll POSIX 仿真层。
  2. 位于 /mingw32 或 /mingw64 中的 MinGW 工具链创建本机 Windows 程序,这些程序基本上只能访问 Microsoft 的 headers 和库提供的功能,除此之外别无其他。这些程序更容易重新分发给其他用户,并且通常 运行 更快。

如果您真的需要 POSIX 的很多功能,您可能无法使用 MinGW 工具链。