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

问题描述 投票:0回答:1

我尝试在 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++
),但我再次收到此错误。

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

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

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

编辑:即使没有任何设置(只是./configure --prefix=/c/gmp-6.1.0

)也会退出并出现相同的错误。

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

c++ windows 64-bit gmp msys2
1个回答
6
投票
通过在配置命令中添加

--host=x86_64-w64-mingw32

 可以解决此问题。通常建议构建使用 Autotools 或某种形式的 Windows 64 位配置脚本的软件。

您可以阅读

MinGW-w64 wiki 上的此页面以了解有关这些内容的更多信息。这是该页面中最相关的引用:

三元组和 MinGW-w64

使用 MinGW-w64 交叉编译器时,虽然您可能需要使用不同的

--build

 三元组,但您只会使用 
--host
 三元组 
i686-w64-mingw32
x86_64-w64-mingw32
。为 32 位 Windows 平台构建时使用 
i686-w64-mingw32
,为 64 位 Windows 平台构建时使用 
x86_64-w64-mingw32
。使用 MinGW-w64 本机编译器时,您通常不需要提供 
configure
 任何类型三元组信息。

© www.soinside.com 2019 - 2024. All rights reserved.