在 64 位 Windows 7 (msys2/mingw64) 上构建 GMP 6.1.0:由于 mp_limb_t 不是 64 位,配置失败

Building GMP 6.1.0 on 64 bit Windows 7 (msys2/mingw64): configure fails due to mp_limb_t is not 64 bits

我尝试在我的 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已经安装好了,可以使用了。但是我的程序的 运行 时间增加了大约 70%,仅仅因为使用从 msys2 安装的 GMP 构建 NTL。我认为这是因为它不是为我的电脑构建的,所以它根本没有优化。

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

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

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

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