MSYS2环境的使用

6
我希望全面了解如何使用MSYS2平台中的环境。 部分描述可在此链接找到: https://www.msys2.org/docs/environments/ 我理解的内容有:
  1. MSYS环境 用于构建仅在MSYS2环境中运行的应用程序。通过cygwin C库可用POSIX层。应用程序使用GCC编译为64位(32位MSYS2除外)。

  2. MINGW64环境 用于创建独立于MSYS2环境运行的本地Windows应用程序。使用旧的MSVCRT技术。应用程序使用GCC编译为64位。

  3. MINGW32环境 用于创建独立于MSYS2环境运行的本地Windows应用程序。使用旧的MSVCRT技术。应用程序使用GCC编译为32位。

  4. UCRT64环境 应用程序使用GCC编译为64位。使用较新的UCRT技术。

  5. CLANG64环境 应用程序使用LLVM编译为64位。使用较新的UCRT技术。

UCRT64和CLANG64之间的区别在于使用不同的编译器。Clang(LLVM的前端)部分兼容GCC命令。

我的问题是:

但是何时使用UCRT64,何时使用MINGW64?我可以使用UCRT64构建库并动态或静态链接,然后使用MSVC编译器构建项目吗?是否可以使用MSYS2构建库,然后稍后使用MSVC编译器进行链接?


1
MINGW64是古老而经过时间考验的。UCRT64是新的。UCRT64支持文件路径中的UTF-8(MINGW64需要解决方法)。我认为两者都不兼容MSVC(对于C++可能兼容C),但这通常并不重要。 - HolyBlackCat
@HolyBlackCat 可以的:https://dev59.com/jVLTa4cB1Zd3GeqPXiN_ - user16533250
在运行path %PATH%; C:\msys2\usr\bin之后,我发现MSYS变得不那么混乱了。这个命令将通过pacman安装的二进制文件放入常规的cmd shell中,而不是它们自己的特殊shell中。 - isomorphismes
1个回答

1

@HolyBlackCat:你的回答可能会被一些读者误解。它并没有错,但为了理解细节,我们应该将读者指向MSYS2环境概述

我的理解是:MINGW编译器并不过时,但Mingw将代码链接到MSVCRT运行库,这个库在某些未知的时间内可能会死亡。UCRT将代码链接到新的(也许是未来的)ucrt运行库,这可能会赢得M$竞赛。 但如果善良的读者想要将他的二进制文件与一些由MSVCRT制作的DLL、LIB或EXE链接,他需要使用Mingw。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接