为什么 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可执行文件。
那么,w64
和 mingw32
在这些二进制文件的名称中表示什么?
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 三元组。
查看我系统上目前的 mingw 二进制文件,我通常有 i686-w64-mingw32-*
和 x86_64-w64-mingw32-*
命令。
我假设前者编译32位Windows可执行文件,后者编译64位Windows可执行文件。
那么,w64
和 mingw32
在这些二进制文件的名称中表示什么?
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 三元组。