为什么 MinGW 二进制文件的名称如此复杂? (例如 i686-w64-mingw32-...)

Why do MinGW binaries have such complicated names? (e.g. i686-w64-mingw32-...)

查看我系统上目前的 mingw 二进制文件,我通常有 i686-w64-mingw32-*x86_64-w64-mingw32-* 命令。

我假设前者编译32位Windows可执行文件,后者编译64位Windows可执行文件。

那么,w64mingw32 在这些二进制文件的名称中表示什么?

w32 二进制文件有什么意义吗? i686-w32-mingw32-gcc?我想 mingw32 是因为该项目以前称为 mingw32 并已重命名为 MinGW。

MinGW 基于 GCC and binutils 以及其他 GNU 软件。 GNU 项目使用所谓的 "GNU triplets" 来指定体系结构信息。三元组具有以下格式:

machine-vendor-operatingsystem

构建二进制文件时指定了三元组。

MinGW-w64 使用 w64 作为供应商字段,mingw32 作为操作系统。当然,mingw32不是一个操作系统,但它被GCC和binutils构建系统和源代码视为一个。

所以二进制文件的这些长名称是 GCC 和 binutils 使用的构建系统的产物。所有这些二进制文件都安装在同一目录中,因此针对不同体系结构(在本例中为 32 位与 64 位)的二进制文件需要具有不同的文件名。最简单的方法是在二进制文件前加上描述这些架构的 GNU 三元组。