【问题标题】:Configure options for building MinGW-64 on linux-64 for linux-64 (ultimately targetting windows-64)为 linux-64 配置在 linux-64 上构建 MinGW-64 的选项(最终以 windows-64 为目标)
【发布时间】:2014-06-24 06:36:05
【问题描述】:

我想在哪里构建 MinGW-w64:

答:我想在 Linux(64 位)上编译 MinGW 本身。
B:我希望 MinGW 工具(编译器等)在 Linux(64 位)上运行。
C:我希望 MinGW 工具(编译器等)生成在 Windows 64 位(Win7 和 Win8)上运行的代码。

我在配置阶段遇到了问题。我用谷歌搜索了一下,但我找不到我需要传递哪些选项来配置。

我已经从 (https://svn.code.sf.net/p/mingw-w64/code/trunk/) 下载了 MinGW-w64 SVN 的源代码。 (AFAICT 这是当前的官方 repo)。

源有一个文本帮助 (mingw-w64-doc/howto-build/mingw-w64-howto-build.txt)。然而,这主要是为那些想要在 Windows 上运行 MinGW 工具的人设计的。
示例选项(对于非 multilib w64 目标)是:

--host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --disable-multilib

但我想我希望主机选项指的是 linux(对吗?)。我试过了

--host=x86_64-linux-gnu
--host=x86_64-pc-linux-gnu
但没有运气。

我得到错误:

配置:错误:请检查 mingw-w64 标头设置和构建/主机选项是否设置正确。
配置:错误:../../../svn/mingw-w64-v6615-2014-05-07/mingw-w64-crt/mingw-w64-crt 配置失败

完整的日志是

检查是否启用 Makefile 的维护者特定部分...否 检查与 BSD 兼容的安装... /usr/bin/install -c 检查构建环境是否健全......是的 /make/tool/MinGW/svn/mingw-w64-v6615-2014-05-07/build-aux/missing:未知的“--is-lightweight”选项 尝试`/make/tool/MinGW/svn/mingw-w64-v6615-2014-05-07/build-aux/missing --help' 了解更多信息 配置:警告:“缺失”脚本太旧或缺失 检查 x86_64-linux-gnu-strip... 否 检查脱衣...脱衣 检查线程安全的 mkdir -p... /bin/mkdir -p 检查 gawk... gawk 检查 make 是否设置 $(MAKE)... 是 检查make是否支持嵌套变量...是的 检查构建系统类型... x86_64-unknown-linux-gnu 检查主机系统类型... x86_64-pc-linux-gnu 检查是否构建标题...是的 检查是否构建 crt... 是 检查是否构建可选库...否 检查是否构建可选工具...否 检查生成的文件是否比配置更新...完成 配置:创建 ./config.status config.status:创建 Makefile config.status:创建 config.h config.status:config.h 不变 === 在 mingw-w64-headers 中配置 (/make/tool/MinGW/build/v6615-2014-05-07/mingw-w64-headers) 配置:运行 /bin/bash ../../../svn/mingw-w64-v6615-2014-05-07/mingw-w64-headers/configure --disable-option-checking '--prefix=/ make/tool/MinGW/use/v6615/x86_64-w64-mingw32''--target=x86_64-w64-mingw32'''--host=x86_64-linux-gnu''--disable-multilib''--with- sysroot=/make/tool/MinGW/use/v6615/x86_64-w64-mingw32' 'host_alias=x86_64-linux-gnu' 'target_alias=x86_64-w64-mingw32' --cache-file=/dev/null --srcdir =../../../svn/mingw-w64-v6615-2014-05-07/mingw-w64-headers 检查与 BSD 兼容的安装... /usr/bin/install -c 检查构建环境是否健全......是的 /make/tool/MinGW/svn/mingw-w64-v6615-2014-05-07/mingw-w64-headers/build-aux/missing:未知的“--is-lightweight”选项 尝试`/make/tool/MinGW/svn/mingw-w64-v6615-2014-05-07/mingw-w64-headers/build-aux/missing --help' 获取更多信息 配置:警告:“缺失”脚本太旧或缺失 检查 x86_64-linux-gnu-strip... 否 检查脱衣...脱衣 检查线程安全的 mkdir -p... /bin/mkdir -p 检查 gawk... gawk 检查 make 是否设置 $(MAKE)... 是 检查make是否支持嵌套变量...是的 检查是否启用 Makefile 的维护者特定部分...否 检查构建系统类型... x86_64-unknown-linux-gnu 检查主机系统类型... x86_64-pc-linux-gnu 检查不截断输出的 sed... /bin/sed 检查是否使用 widl 重建标头...否 检查是否为 Cygwin 构建 w32api 包...否 检查 c 运行时标头...是的 检查可选的 sdk 标头... ddk,directx 检查是否启用了安装 idl 文件...否 检查是否启用安全 API...否 检查生成的文件是否比配置更新...完成 配置:创建 ./config.status config.status:创建 Makefile config.status: 创建 crt/_mingw.h config.status:创建 config.h config.status:config.h 不变 === 在 mingw-w64-crt 中配置 (/make/tool/MinGW/build/v6615-2014-05-07/mingw-w64-crt) 配置:运行 /bin/bash ../../../svn/mingw-w64-v6615-2014-05-07/mingw-w64-crt/configure --disable-option-checking '--prefix=/ make/tool/MinGW/use/v6615/x86_64-w64-mingw32''--target=x86_64-w64-mingw32'''--host=x86_64-linux-gnu''--disable-multilib''--with- sysroot=/make/tool/MinGW/use/v6615/x86_64-w64-mingw32' 'host_alias=x86_64-linux-gnu' 'target_alias=x86_64-w64-mingw32' --cache-file=/dev/null --srcdir =../../../svn/mingw-w64-v6615-2014-05-07/mingw-w64-crt 检查与 BSD 兼容的安装... /usr/bin/install -c 检查构建环境是否健全......是的 检查 x86_64-linux-gnu-strip... 否 检查脱衣...脱衣 检查线程安全的 mkdir -p... /bin/mkdir -p 检查 gawk... gawk 检查 make 是否设置 $(MAKE)... 是 检查make是否支持嵌套变量...是的 检查是否启用 Makefile 的维护者特定部分...否 检查构建系统类型... x86_64-unknown-linux-gnu 检查主机系统类型... x86_64-pc-linux-gnu 检查 sysroot... /make/tool/MinGW/use/v6615/x86_64-w64-mingw32 检查不截断输出的 sed... /bin/sed 检查 gawk ...(缓存) gawk 检查 x86_64-linux-gnu-gcc... x86_64-linux-gnu-gcc 检查 C 编译器是否工作......是的 检查 C 编译器默认输出文件名... a.out 检查可执行文件的后缀... 检查我们是否在交叉编译...否 检查目标文件的后缀... o 检查我们是否正在使用 GNU C 编译器...是的 检查 x86_64-linux-gnu-gcc 是否接受 -g... 是 检查 x86_64-linux-gnu-gcc 选项以接受 ISO C89... 不需要 检查 x86_64-linux-gnu-gcc 是否同时理解 -c 和 -o ...是 检查 make 使用的包含样式... GNU 检查 x86_64-linux-gnu-gcc 的依赖样式... gcc3 检查 x86_64-linux-gnu-g++... x86_64-linux-gnu-g++ 检查我们是否正在使用 GNU C++ 编译器...是的 检查 x86_64-linux-gnu-g++ 是否接受 -g... 是 检查 x86_64-linux-gnu-g++ 的依赖样式... gcc3 检查如何运行 C 预处理器... x86_64-linux-gnu-gcc -E 检查 x86_64-linux-gnu-ranlib... 否 检查ranlib...ranlib 检查 x86_64-linux-gnu-dlltool... 否 检查 dlltool... 否 检查 x86_64-linux-gnu-ar... 否 检查 x86_64-linux-gnu-lib... 否 检查 x86_64-linux-gnu-link... 否 检查 ar...ar 检查存档器 (ar) 界面... ar 检查 x86_64-linux-gnu-gcc 的依赖样式... gcc3 检查 x86_64-linux-gnu-as... 否 检查 as... as 检查是否为 Cygwin 构建 w32api 包...否 检查是否构建 Win32 库...否 检查是否构建 Win64 库...是 检查是否构建 WinCE 库...否 检查是否启用通配符...否 检查是否启用私有导出...否 检查是否启用延迟导入库...否 检查是否启用实验功能...否 检查编译器是否支持 -municode... 否 检查处理长行的 grep 和 -e... /bin/grep 检查 egrep... /bin/grep -E 检查 ANSI C 头文件...是的 检查 sys/types.h... 是 检查 sys/stat.h... 是的 检查stdlib.h ...是的 检查 string.h... 是的 检查内存.h ...是的 检查strings.h ...是的 检查 inttypes.h ... 是的 检查stdint.h ...是的 检查 unistd.h ...是的 检查 _mingw_mac.h 可用性...否 检查 _mingw_mac.h 的存在...否 检查_mingw_mac.h ...否 配置:错误:请检查 mingw-w64 标头设置和构建/主机选项是否设置正确。 配置:错误:../../../svn/mingw-w64-v6615-2014-05-07/mingw-w64-crt/mingw-w64-crt 配置失败

注意:我可以成功地从源代码编译原生 GCC 和 Clang。

目的: 我的最终目标是使用最新的 Clang 为 Windows 7/8 64 位(包括 D3D11 和 OpenGL)生成 C++14 代码。
我想构建主干 MinGW,因为最新的 Clang 会生成默认 MinGW 无法组装的汇编代码(主要是“行尾垃圾”错误)。
截至 2014 年 5 月 7 日(今天),只有 Clang 提供完整的 C++14 支持,并且我正在使用仅在 Clang 中可用的功能(例如:变量模板)。
然而,Clang 依赖 GCC / MinGW 进行组装和链接。

信息: 操作系统:Linux Mint 16 64 位 (XFCE)。

感谢所有帮助。

【问题讨论】:

    标签: linux mingw mingw-w64


    【解决方案1】:

    老问题,但答案可能对来自 google 的人有所帮助。

    主机和构建标志有点误导。来自mingw-w64-crt/configure --help 帮助页面的信息显示:

    System types:
      --build=BUILD     configure for building on BUILD [guessed]
      --host=HOST       cross-compile to build programs to run on HOST [BUILD]
    

    所以我们想单独留下--build,并指定我们希望与--host交叉编译的Windows系统。

    因此,为 64 位窗口构建并包含 32 位和 64 位库以及 std::experimental 功能的方法是:

    ./configure --enable-lib32 --enable-lib64 --enable-experimental --host=x86_64-w64-mingw32
    

    如果你想为 32 位窗口构建,这非常相似,但是你当然不能启用 64 位模式:

    ./configure --enable-lib32 --enable-experimental --host=i686-w64-mingw32
    

    【讨论】:

    • 上帝保佑你这个陌生人!即使5年后也不算晚。它对我有用,但我还必须做一件事:在其余部分之前安装标题reference
    【解决方案2】:

    https://github.com/Zeranoe/mingw-w64-build

    我想你的答案在这里:
    ./mingw-w64-build x86_64 for 64bit;

    ./mingw-w64-build x86_64 i686 用于 32 位。

    我在配置时遇到了同样的错误。读完mingw-w64-build这个文件中的shell后,我想你将不得不执行:

    ./configure 在文件夹../x86_64-w64-v8.0.0/mingw-w64-headers

    然后

    ./configure 在文件夹../x86_64-w64-v8.0.0/mingw-w64-crt

    最后

    ./configure 在文件夹 ../x86_64-w64-v8.0.0/mingw-w64-libraries/winpthreads 中。

    我没有手动验证整个过程,因为这个 shell 文件只是完成了这项工作。

    【讨论】:

      【解决方案3】:

      也许你可以试试这个——它是 mingw 的最新版本,你不必自己编译:

      https://github.com/Zeranoe/mingw-w64-build

      它支持几乎所有发行版...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-11
        • 1970-01-01
        • 2012-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多