【问题标题】:Building GMP 6.1.0 on 64 bit Windows 7 (msys2/mingw64): configure fails due to mp_limb_t is not 64 bits在 64 位 Windows 7 (msys2/mingw64) 上构建 GMP 6.1.0:配置失败,因为 mp_limb_t 不是 64 位
【发布时间】:2015-11-23 13:36:15
【问题描述】:

我尝试在我的 Windows 7 64 位计算机上构建 GMP,所以我运行 config.guess 并得到 k10-pc-msys。 (我用的是msys2和mingw64)

然后我跑了

./configure --prefix=/c/gmp-6.1.0 --build=k10-pc-msys --enable-cxx

但是这个错误退出了

checking size of mp_limb_t... 4
configure: error: Oops, mp_limb_t is 32 bits, but the assembler code
in this configuration expects 64 bits.

所以我再次运行了配置,并添加了一个额外的 ABI=64(考虑强制 mp_limb_t 为 64 位),但这以同样的错误结束。在此之后,我尝试添加CC="g++"(认为--enable-cxx 需要g++),但我再次收到此错误。

我对此进行了很多搜索,发现向juliaLang on GitHub 报告的一个问题看起来与我的问题很接近,但该解决方案似乎对我不起作用,因为我没有使用 Julia。

有人知道这个错误并找到解决方法吗?

注意:我看到msys2已经安装好了,可以使用了。但是我的程序的运行时间仅通过使用从 msys2 安装的 GMP 构建 NTL 增加了大约 70%。我认为这是因为它不是为我的计算机构建的,因此根本没有优化。

编辑:即使没有任何设置(仅./configure --prefix=/c/gmp-6.1.0)也会退出并出现相同的错误。

背景:我想使用NTL 的线程安全版本。但是为了构建 NTL 线程安全,我必须使用 GMP。

【问题讨论】:

  • 更大版本的 GMP 可能是因为他们进行了 FAT 构建(每个处理器变体一个,放在一起)。请注意,我无法重现您的问题。我的假设是您不是从一个干净的目录开始,或者您的环境中存在干扰。
  • @MarcGlisse 我向你保证,我是从一个干净的目录开始的。但有可能是有什么东西干扰了。我的PATH 只包含一个编译器路径,即C:/mysys64/mingw64/bin。所以我不确定还有什么可以干扰的。
  • 你能把完整的 config.log 放在某个地方吗? (比如从不带参数的配置运行)
  • 谢谢。我正在尝试找出与我的设置不同的地方。目前,最明显的是你有一点没有更新(pacman -Syu 我相信,但不要不检查就运行它)。
  • MSYS2 包含一个编译器,但该编译器用于 LP64 ABI。在它上面使用 mingw 几乎是一种交叉编译,因此更容易按照接受的答案中的建议指定平台(我想 configure 可能有办法弄清楚发生了什么,但不值得复杂化) .

标签: c++ windows 64-bit gmp msys2


【解决方案1】:

这可以通过在配置命令中添加--host=x86_64-w64-mingw32 来解决。这通常被推荐用于构建使用 Autotools 或某种形式的 Windows 64 位配置脚本的软件。

您可以阅读this page on the MinGW-w64 wiki 以了解有关这些内容的更多信息。

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 2012-11-15
    • 2011-12-21
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    相关资源
    最近更新 更多