在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

本文关键字:64位 mp 由于 配置 不是 limb GMP msys2 Windows mingw64 构建      更新时间:2023-10-16

我试图在我的Windows7 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++),但再次出现此错误。

我在谷歌上搜索了很多关于这一点的内容,发现GitHub上向juliaLang报告的一个问题看起来与我的问题很接近,但这个解决方案似乎对我不起作用,因为我没有使用Julia。

有人知道这个错误并找到了修复它的方法吗?

注意:我看到msys2已经安装,我可以使用它。但我的程序的运行时间仅从msys2安装的GMP构建NTL增加了约70%。我想这是因为它不是为我的电脑构建的,所以它根本没有优化。

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

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

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

你可以在MinGW-w64维基上阅读这个页面来了解更多关于这些事情的信息。