【问题标题】:Why do MinGW binaries have such complicated names? (e.g. i686-w64-mingw32-...)为什么 MinGW 二进制文件的名称如此复杂? (例如 i686-w64-mingw32-...)
【发布时间】:2017-12-01 01:34:09
【问题描述】:

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

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

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

w32 二进制文件是否有任何意义,例如i686-w32-mingw32-gcc?我想mingw32 是因为这个项目曾经被称为mingw32 并被重命名为MinGW。

【问题讨论】:

    标签: mingw mingw32 mingw-w64


    【解决方案1】:

    MinGW 基于 GCC 和 binutils 以及其他 GNU 软件。 GNU 项目使用所谓的“GNU 三元组”来指定架构信息。三元组的格式如下:

    machine-vendor-operatingsystem
    

    三元组是在构建二进制文件时指定的。

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

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

    【讨论】:

    • 刚刚给这个答案一个额外的升级,因为它今天再次极大地帮助了我对如何在 linux for windows 上进行交叉编译的理解
    • @jcarpenter2 既然你提到了交叉编译,那就看看这个,如果你还没有发现的话:mxe.cc
    猜你喜欢
    • 2012-08-13
    • 2013-02-25
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    相关资源
    最近更新 更多