Build GMP on 64bit Windows

摘要:
1、MSYS2环境搭建1.1、安装msys2的主页地址:http://www.msys2.org/下载32位或64位,我这里下载了64位msys2-x86_64-20161025.exe双击傻瓜式安装1.2、更新软件包开始菜单-˃MSYS264bit-˃MSYS2MinGW32-bit剩下的工作都在这个bashshell下进行查看软件包清单$pacman-Sl|grepgccmingw32ming

1、MSYS2 环境搭建

1.1、安装

msys2的主页地址:

http://www.msys2.org/

下载32位或64位,我这里 下载了64位

msys2-x86_64-20161025.exe

双击傻瓜式安装

1.2、更新软件包

开始菜单->MSYS2 64bit->MSYS2 MinGW 32-bit

剩下的工作都在这个bashshell下进行

查看软件包清单

$  pacman -Sl | grep gcc

mingw32 mingw-w64-i686-gcc 6.2.0-2 [已安装]
mingw32 mingw-w64-i686-gcc-ada 6.2.0-2
mingw32 mingw-w64-i686-gcc-fortran 6.2.0-2
mingw32 mingw-w64-i686-gcc-libgfortran 6.2.0-2 [已安装]
mingw32 mingw-w64-i686-gcc-libs 6.2.0-2 [已安装]
mingw32 mingw-w64-i686-gcc-objc 6.2.0-2
mingw64 mingw-w64-x86_64-gcc 6.2.0-2
mingw64 mingw-w64-x86_64-gcc-ada 6.2.0-2
mingw64 mingw-w64-x86_64-gcc-fortran 6.2.0-2
mingw64 mingw-w64-x86_64-gcc-libgfortran 6.2.0-2
mingw64 mingw-w64-x86_64-gcc-libs 6.2.0-2
mingw64 mingw-w64-x86_64-gcc-objc 6.2.0-2
msys gcc 5.3.0-3 [已安装]
msys gcc-fortran 5.3.0-3
msys gcc-libs 5.3.0-3 [已安装]
msys mingw-w64-cross-gcc 5.3.0-1

安装gcc

$ pacman -S mingw-w64-i686-gcc

警告:mingw-w64-i686-gcc-6.2.0-2 已经为最新 -- 重新安装
正在解决依赖关系...
正在查找软件包冲突...

软件包 (1) mingw-w64-i686-gcc-6.2.0-2

全部安装大小: 112.18 MiB
净更新大小: 0.00 MiB

:: 进行安装吗? [Y/n] Y
(1/1) 正在检查密钥环里的密钥 [#####################] 100%
(1/1) 正在检查软件包完整性 [#####################] 100%
(1/1) 正在加载软件包文件 [#####################] 100%
(1/1) 正在检查文件冲突 [#####################] 100%
(1/1) 正在检查可用硬盘空间 [#####################] 100%
:: 正在处理软件包的变化...
(1/1) 正在重新安装 mingw-w64-i686-gcc [#####################] 100%

查看gcc安装情况

$ gcc -v
Using built-inspecs.
COLLECT_GCC=C:msys64mingw32ingcc.exe
COLLECT_LTO_WRAPPER=C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/6.2.0/lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../gcc-6.2.0/configure --prefix=/mingw32 --with-local-prefix=/mingw32/local --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --with-native-system-header-dir=/mingw32/i686-w64-mingw32/include --libexecdir=/mingw32/lib --enable-bootstrap --with-arch=i686 --with-tune=generic --enable-languages=c,lto,c++,objc,obj-c++,fortran,ada --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw32 --with-mpfr=/mingw32 --with-mpc=/mingw32 --with-isl=/mingw32 --with-pkgversion='Rev2, Built by MSYS2 project' --with-bugurl=https://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld --disable-sjlj-exceptions --with-dwarf2
Thread model: posix
gcc version 6.2.0 (Rev2, Built by MSYS2 project)

安装make

$ pacman -S make
警告:make-4.2.1-1 已经为最新 --重新安装
正在解决依赖关系...
正在查找软件包冲突...
软件包 (1) make-4.2.1-1
全部安装大小:  1.22MiB
净更新大小:  0.00MiB
:: 进行安装吗? [Y/n] Y
(1/1) 正在检查密钥环里的密钥                       [#####################] 100%
(1/1) 正在检查软件包完整性                         [#####################] 100%
(1/1) 正在加载软件包文件                           [#####################] 100%
(1/1) 正在检查文件冲突                             [#####################] 100%
(1/1) 正在检查可用硬盘空间                         [#####################] 100%
:: 正在处理软件包的变化...
(1/1) 正在重新安装 make                            [#####################] 100%

查看make安装情况

$ make -v
GNU Make 4.2.1
为 x86_64-pc-msys 编译
Copyright (C) 1988-2016Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通用公共许可证第 3 版或更新版本<http://gnu.org/licenses/gpl.html>。
本软件是自由软件:您可以自由修改和重新发布它。
在法律允许的范围内没有其他保证。

2、编译GMP

2.1、下载gmp

https://gmplib.org/

Download the latest release of GMP
GMP 6.1.2    lz, 1939430 bytes    xz, 1946336 bytes    bz2, 2386766bytes
Main site, gmplib.org, via https    gmp-6.1.2.tar.lz    gmp-6.1.2.tar.xz    gmp-6.1.2.tar.bz2
USA, ftp.gnu.org, via https    gmp-6.1.2.tar.lz    gmp-6.1.2.tar.xz    gmp-6.1.2.tar.bz2

我这里下载了gmp-6.1.2.tar.xz版本

2.2、进入bash shell

开始菜单->MSYS2 64bit->MSYS2 MinGW 32-bit

2.3、解压

进入到gmp-6.1.2.tar.xz目录

$ tar -xvf gmp-6.1.2.tar

2.4、编译

进入到gmp-6.1.2解压的目录

$ cd gmp-6.1.2/

configure

$ ./configure

make

2.5、生成的库文件位置

.libs 目录下

libgmp.a

3、VS使用

3.1、如何使用gmp

拷贝libgmp.a和gmp.h到工程目录下

#include <gmp.h>
#pragma comment(lib, "libgmp.a")
#pragma comment(lib, "libgcc.a")

这里需要把libgcc.a链接进来,位置在C:msys64mingw32libgcci686-w64-mingw326.2.0目录中

3.2、示例,生成两个素数p,q

#include "stdafx.h"
#include <gmp.h>
#pragma comment(lib, "libgmp.a")
#pragma comment(lib, "libgcc.a")
int _tmain(int argc, _TCHAR*argv[])
{
    gmp_randstate_t grt;  
    gmp_randinit_default(grt); //设置随机数生成算法为默认  
    gmp_randseed_ui(grt, time(NULL));   //设置随机化种子为当前时间,这几条语句的作用相当于标准C中的srand(time(NULL));  

    mpz_t key_p, key_q;  
    mpz_init(key_p);  
    mpz_init(key_q);    //一个mpz_t类型的变量必须在初始化后才能被使用  

    mpz_urandomb(key_p, grt, 1024);  
    mpz_urandomb(key_q, grt, 1024); //随机生成一个在0~2^1024-1之间的随机数  
    if(mpz_even_p(key_p))  
        mpz_add_ui(key_p, key_p, 1);  
    if(mpz_even_p(key_q))  
        mpz_add_ui(key_q, key_q, 1);    //如果生成的随机数为偶数,则加一  
    while(!mpz_probab_prime_p(key_p, 25) > 0)  //逐个检查比p大的奇数是否为素数  
        mpz_add_ui(key_p, key_p, 2);  
    while(!mpz_probab_prime_p(key_q, 25) > 0)  
        mpz_add_ui(key_q, key_q, 2);  
    gmp_printf("%ZX
", key_p);   //以十六进制的形式输出生成的素数  
    gmp_printf("%ZX
", key_q);    
    return 0;
}

免责声明:文章转载自《Build GMP on 64bit Windows》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇深度学习之GRU网络解决win7 安装完jdk7后,再安装jdk8出现的问题 has value '1.8', but '1.7' is required.下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ASP.NET Core文件压缩最佳实践

前言 在微软官方文档中,未明确指出文件压缩功能的使用误区。 本文将对 ASP.NET Core 文件响应压缩的常见使用误区做出说明。 误区1:未使用Brotil 压缩 几乎不需要任何额外的代价,Brotil 压缩算法可以帮助你的网站提升约 20% 静态资源加载性能。 同时启用 Gzip / Brotil 压缩 Gzip 有更好的 user-agent...

【服务器配置】解决windows机器不自带tar命令_安装tar for windows

本文重点: 1、安装tar for windows 2、将安装路径加入环境变量 由于项目需要,使用windows机器部署项目,千辛万苦将包传到windows机器上后,竟然发现不支持解压的tar命令。 解决方案是:安装tar for windows。 下载地址:http://gnuwin32.sourceforge.net/packages/gtar.ht...

打开chrome 应用商店

https://zhuanlan.zhihu.com/p/113207558 欢迎来到教学星球,我们一起终生学习。今天我们来说说如何访问谷歌网上应用商店。有了谷歌网上应用商店之后,才能为你的浏览器各种赋能。 首先需要安装一个谷歌浏览器,下载地址:https://www.google.cn/intl/zh-CN/chrome/ 安装好谷歌浏览器之后,下载一个...

CodeSmith Generator代码生成器

     为了学习这个软件怎么使用可是真费劲,我才发现英语不好真要命啊,所有的文档全是英文的,一个也看不懂啊,我就想着我下载一个软件自己琢磨吧,软件也是全英文的,实在不行我找朋友带着我一起学习的,没办法英语差看不懂,那为了让自己记住,以后方便使用,我还是写的详细点吧。我之前下了一个高版本7.0的,后来朋友给我发了个6.5的那就用6.5的吧,7.0我数据库连...

被hao123劫持主页最佳解决办法

作者:田无法链接:https://www.zhihu.com/question/39881858/answer/159582643来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 被hao123劫持主页最佳解决办法 方法一 下载360卫士,然后使用其主页劫持工具,可以恢复,但是还没结束,如果这是你高高兴兴地删除360,等第二次...

WINCE快捷方式详解(转载)

1.WINCE快捷方式结构 WINCE的快捷方式和WIN2K,XP的不同,只是一个后缀名为.LNK的文本文件.其格式如下: 数字#路径 比如,有个快捷方式写法如下: 23#\Windows\ToolViewer.exe 指的是指向WINDOWS文件夹下的Toolviewer.exe可执行文件.数字究竟代表的是什么意思,我也不太清楚;有一说法是#后的ACS...