爱听歌的松树 · 为什么很多IDE都使用Courier ...· 1 年前 · |
爱旅游的小虾米 · 深入解读Python解析XML的几种方式-腾 ...· 1 年前 · |
幸福的帽子 · .net core6.0 ...· 1 年前 · |
玉树临风的口罩 · 反距离权重插值(IDW)的python实现_ ...· 1 年前 · |
我试着在窗户上安装gmp。我已经找到了从windows源代码编译的混合方式。但无法从GMP6.1.2或visual项目中找到二进制文件,以便从源代码中编译。所以问题是:我可以在哪里下载GMP6.1.2二进制文件,或者使用Visual从源代码中编译。
发布于 2022-09-26 09:52:04
我将描述在Windows中编译GMP的三种方法。
First
安装VisualStudio2022社区 从这一页 。
将VCPKG包管理器安装为 在此描述 ,基本上只需执行两个步骤:
git clone https://github.com/Microsoft/vcpkg --depth=1
在
vcpkg
目录中运行
cmd /c bootstrap-vcpkg.bat
设置系统环境变量
VCPKG_DEFAULT_TRIPLET=x64-windows-static
,为此按WinKey+Pause,然后单击“高级系统设置”,然后单击“环境变量”,在“系统变量”中单击“新建”,并将
VCPKG_DEFAULT_TRIPLET
的值设置为
x64-windows-static
。
而不是上面这个步骤(设置变量),您只需将三重直接传递给所有vcpkg命令,比如
vcpkg install gmp --triplet=x64-windows-static
。
在vcpkg的git目录中运行以下命令:
vcpkg install gmp --triplet=x64-windows-static
(如我前面所述,如果设置环境变量,则可以省略
--triplet=x64-windows-static
)。
这将需要相当多的时间,它将编译许多软件包的来源。
完整编译完成后,它将显示在控制台路径到ZIP文件与已编译的GMP库。在我的系统上,ZIP文件是在
C:\Users\user\AppData\Local\vcpkg\archives\8d\8d1c08fabf677187083dedd12d6accf7114d91580e75611c065f1674b600bee9.zip
创建的。
解压缩这个ZIP文件,然后您可以像下面这样编译您的C++程序:
cl program.cpp /O2 /GL /EHsc /std:c++latest /Ipath_to_unpacked_zip/include/ path_to_unpacked_zip/lib/gmp.lib
您可能知道,
cl
命令应该从"Windows菜单/VisualStudio2022 /“中找到的"x64本机命令提示符”运行。
您也可以安装
MPIR
,而不是GMP,这是GMP的分支,具有相同的界面,但更受Windows用户的青睐。只需做
vcpkg install mpir
,但这是可以做到的,只有当你删除GMP包,只有一个MPIR或GMP可以安装。
第二
此步骤不编译GMP,而是使用来自MinGW安装的预编译二进制文件。
按照第一步安装Visual。
去
主页
of MSYS2。下载安装程序,链接位于"1。下载安装程序:“短语。安装到任何位置,例如
c:\bin\msys\
。
在Windows中安装菜单转到应用程序"MSYS2 64位“并在其内部启动程序"MSYS2 MSYS”之后,它将运行类似Unix的shell,从它执行:
pacman -S msys/binutils msys/gcc msys/mingw-w64-cross-crt-git clang64/mingw-w64-clang-x86_64-gmp
上面的命令将安装使用GMP所需的所有软件包。如果您需要更多的包使用
-Ss
选项,比如
pacman -Ss clang
,这将搜索CLang,因此
-Ss
会搜索和安装
-S
。
如果您需要一段时间后,
pacmans -Syu
命令更新所有已安装的包,运行此命令两次,一次更新基本系统文件,第二次更新所有其他包(第一次需要关闭并再次打开MSYS )。
现在,由于与Visual的
libmingwex.a
库发生冲突,您需要对库内的两个符号进行调整,将其重命名。
在下面的两个命令中,我假设您的MSYS安装文件夹是
c:\dev\msys\
,您可以将其更改为已安装的一个。
c:\bin\msys\usr\bin\objcopy.exe --redefine-sym wcsnlen=wcsnlen_renamed --redefine-sym strnlen=strnlen_renamed c:\bin\msys\opt\x86_64-w64-mingw32\lib\libmingwex.a c:\bin\msys\opt\x86_64-w64-mingw32\lib\libmingwex_renamed.a
(这将创建文件
libmingwex_renamed.a
,在
libmingwex.a
库中重命名两个符号)
现在一切就绪,您可以编译C++程序,如下所示:
cl program.cpp /O2 /GL /EHsc /std:c++latest /Ic:\bin\msys\clang64\include\ c:\bin\msys\clang64\lib\libgmp.a c:\bin\msys\usr\lib\gcc\x86_64-pc-msys\11.3.0\libgcc.a c:\bin\msys\opt\x86_64-w64-mingw32\lib\libmingwex_renamed.a
请注意,在上面的命令中,我使用了3个库
libgmp.a
、
libgcc.a
和
libmingwex_renamed.a
。还请注意,
libgcc.a
是从子文件夹
\11.3.0\
获取的,它是已安装的GCC的当前版本,但是当MSYS2将GCC更新到以后的版本时,这个版本子文件夹应该相应地进行更改。
第三代
安装Visual,如在第一步和第二步。
在这一步中,我们将使用 MPIR ,它是GMP的叉子,非常好的叉子更适合Windows。
克隆储存库:
git clone https://github.com/BrianGladman/mpir --depth=1
在文件夹
.\mpir\msvc\vs22\
中运行:
cmd /c msbuild.bat gc LIB x64 Release
上面的命令构建了适合于任何CPU的通用版本。在那之后
cmd /c msbuild.bat skylake_avx LIB x64 Release
它构建了非常优化的版本,比泛型更快。
非常重要的 。如果第二个(skylake)构建失败,那么泛型(gc)版本可以使用,但它甚至可以慢5倍。如果快速Skylake版本失败了,那么最好不要使用这种 第三种 方式来编译GMP,除非您不能做其他的事情,或者如果慢版本对您来说已经足够了。
上面的命令应该像往常一样在开始菜单中的Visual的"x64本机命令提示符“外壳中运行。
在构建完成GMP (实际上MPIR)之后,您可以将您的程序编译为:
cl program.cpp /O2 /GL /EHsc /std:c++latest /Ipath_to_mpir_repo\msvc\vs22\lib_mpir_skylake_avx\x64\Release\ path_to_mpir_repo\msvc\vs22\lib_mpir_skylake_avx\x64\Release\mpir.lib
请注意,在上面的命令中,我使用了
\lib_mpir_skylake_avx\
子文件夹来优化AVX版本,如果只有通用版本,请使用
\lib_mpir_gc\
子文件夹。
发布于 2017-11-18 14:19:26
用VisualStudio在Windows上编译GMP可能很棘手,但是已经有一些这样的问题,这可能对您有帮助(取决于您的具体用例):
简单的答案是,由于VisualStudio是在考虑到的情况下开发的,因此没有任何可以直接使用GMP编译的GMP源。
你的备选方案摘要:
发布于 2022-11-08 16:38:58
当我同时需要gmp和gmpxx时,我在Windows 11中也遇到了同样的问题,多亏了@Arty,只有第一个选项起作用。惟一要添加的是,应该在具有管理权限的终端中运行
vcpkg install gmp --triplet=x64-windows-static
命令,否则将发生以下错误:
文件重命名失败
C:/Users/Desktop/polycut/vcpkg/packages/gmp_x64-windows-static
至
C:/Users/Desktop/polycut/vcpkg/packages/gmp_x64-windows-static_tmp
因为:访问被拒绝。
https://stackoverflow.com/questions/47359417
复制相似问题
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
幸福的帽子 · .net core6.0 使用swagger - 掘金 1 年前 |